Fossil SCM

Be sure to finalize all queries on the /info page.

drh 2013-08-30 12:32 UTC trunk
Commit cca1adad02b98121e7f733164ba8d95e1c1e2db0
1 file changed +27 -27
+27 -27
--- src/info.c
+++ src/info.c
@@ -471,11 +471,11 @@
471471
** With /vinfo and /info, only a list of the changed files are
472472
** shown, without diffs. This behavior is inverted if the
473473
** "show-version-diffs" setting is turned on.
474474
*/
475475
void ci_page(void){
476
- Stmt q;
476
+ Stmt q1, q2, q3;
477477
int rid;
478478
int isLeaf;
479479
int verboseFlag; /* True to show diffs */
480480
int sideBySide; /* True for side-by-side diffs */
481481
u64 diffFlags; /* Flag parameter for text_diff() */
@@ -502,21 +502,21 @@
502502
"SELECT uuid FROM plink, blob"
503503
" WHERE plink.cid=%d AND blob.rid=plink.pid AND plink.isprim",
504504
rid
505505
);
506506
isLeaf = is_a_leaf(rid);
507
- db_prepare(&q,
507
+ db_prepare(&q1,
508508
"SELECT uuid, datetime(mtime, 'localtime'), user, comment,"
509509
" datetime(omtime, 'localtime'), mtime"
510510
" FROM blob, event"
511511
" WHERE blob.rid=%d"
512512
" AND event.objid=%d",
513513
rid, rid
514514
);
515515
sideBySide = !is_false(PD("sbs","1"));
516
- if( db_step(&q)==SQLITE_ROW ){
517
- const char *zUuid = db_column_text(&q, 0);
516
+ if( db_step(&q1)==SQLITE_ROW ){
517
+ const char *zUuid = db_column_text(&q1, 0);
518518
char *zTitle = mprintf("Check-in [%.10s]", zUuid);
519519
char *zEUser, *zEComment;
520520
const char *zUser;
521521
const char *zComment;
522522
const char *zDate;
@@ -529,14 +529,14 @@
529529
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
530530
TAG_USER, rid);
531531
zEComment = db_text(0,
532532
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
533533
TAG_COMMENT, rid);
534
- zUser = db_column_text(&q, 2);
535
- zComment = db_column_text(&q, 3);
536
- zDate = db_column_text(&q,1);
537
- zOrigDate = db_column_text(&q, 4);
534
+ zUser = db_column_text(&q1, 2);
535
+ zComment = db_column_text(&q1, 3);
536
+ zDate = db_column_text(&q1,1);
537
+ zOrigDate = db_column_text(&q1, 4);
538538
@ <div class="section">Overview</div>
539539
@ <table class="label-value">
540540
@ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
541541
if( g.perm.Setup ){
542542
@ (Record ID: %d(rid))
@@ -562,25 +562,25 @@
562562
@ <tr><th>Original&nbsp;Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
563563
}else{
564564
@ <tr><th>Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
565565
}
566566
if( g.perm.Admin ){
567
- db_prepare(&q,
567
+ db_prepare(&q2,
568568
"SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
569569
" FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
570570
" WHERE blob.rid=%d",
571571
rid
572572
);
573
- if( db_step(&q)==SQLITE_ROW ){
574
- const char *zIpAddr = db_column_text(&q, 0);
575
- const char *zUser = db_column_text(&q, 1);
576
- const char *zDate = db_column_text(&q, 2);
573
+ if( db_step(&q2)==SQLITE_ROW ){
574
+ const char *zIpAddr = db_column_text(&q2, 0);
575
+ const char *zUser = db_column_text(&q2, 1);
576
+ const char *zDate = db_column_text(&q2, 2);
577577
if( zUser==0 || zUser[0]==0 ) zUser = "unknown";
578578
@ <tr><th>Received&nbsp;From:</th>
579579
@ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
580580
}
581
- db_finalize(&q);
581
+ db_finalize(&q2);
582582
}
583583
if( g.perm.Hyperlink ){
584584
const char *zProjName = db_get("project-name", "unnamed");
585585
@ <tr><th>Timelines:</th><td>
586586
@ %z(href("%R/timeline?f=%S",zUuid))family</a>
@@ -591,19 +591,19 @@
591591
@ | %z(href("%R/timeline?d=%S",zUuid))descendants</a>
592592
}
593593
if( zParent && !isLeaf ){
594594
@ | %z(href("%R/timeline?dp=%S",zUuid))both</a>
595595
}
596
- db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
596
+ db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
597597
" WHERE rid=%d AND tagtype>0 "
598598
" AND tag.tagid=tagxref.tagid "
599599
" AND +tag.tagname GLOB 'sym-*'", rid);
600
- while( db_step(&q)==SQLITE_ROW ){
601
- const char *zTagName = db_column_text(&q, 0);
600
+ while( db_step(&q2)==SQLITE_ROW ){
601
+ const char *zTagName = db_column_text(&q2, 0);
602602
@ | %z(href("%R/timeline?r=%T",zTagName))%h(zTagName)</a>
603603
}
604
- db_finalize(&q);
604
+ db_finalize(&q2);
605605
606606
607607
/* The Download: line */
608608
if( g.perm.Zip ){
609609
char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
@@ -630,11 +630,11 @@
630630
@ </table>
631631
}else{
632632
style_header("Check-in Information");
633633
login_anonymous_available();
634634
}
635
- db_finalize(&q);
635
+ db_finalize(&q1);
636636
showTags(rid, "");
637637
if( zParent ){
638638
@ <div class="section">Changes</div>
639639
@ <div class="sectionmenu">
640640
verboseFlag = g.zPath[0]!='c';
@@ -677,11 +677,11 @@
677677
@ patch</a></div>
678678
if( pRe ){
679679
@ <p><b>Only differences that match regular expression "%h(zRe)"
680680
@ are shown.</b></p>
681681
}
682
- db_prepare(&q,
682
+ db_prepare(&q3,
683683
"SELECT name,"
684684
" mperm,"
685685
" (SELECT uuid FROM blob WHERE rid=mlink.pid),"
686686
" (SELECT uuid FROM blob WHERE rid=mlink.fid),"
687687
" (SELECT name FROM filename WHERE filename.fnid=mlink.pfnid)"
@@ -691,19 +691,19 @@
691691
" OR mlink.fnid NOT IN (SELECT pfnid FROM mlink WHERE mid=%d))"
692692
" ORDER BY name /*sort*/",
693693
rid, rid
694694
);
695695
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
696
- while( db_step(&q)==SQLITE_ROW ){
697
- const char *zName = db_column_text(&q,0);
698
- int mperm = db_column_int(&q, 1);
699
- const char *zOld = db_column_text(&q,2);
700
- const char *zNew = db_column_text(&q,3);
701
- const char *zOldName = db_column_text(&q, 4);
696
+ while( db_step(&q3)==SQLITE_ROW ){
697
+ const char *zName = db_column_text(&q3,0);
698
+ int mperm = db_column_int(&q3, 1);
699
+ const char *zOld = db_column_text(&q3,2);
700
+ const char *zNew = db_column_text(&q3,3);
701
+ const char *zOldName = db_column_text(&q3, 4);
702702
append_file_change_line(zName, zOld, zNew, zOldName, diffFlags,pRe,mperm);
703703
}
704
- db_finalize(&q);
704
+ db_finalize(&q3);
705705
}
706706
append_diff_javascript(sideBySide);
707707
style_footer();
708708
}
709709
710710
--- src/info.c
+++ src/info.c
@@ -471,11 +471,11 @@
471 ** With /vinfo and /info, only a list of the changed files are
472 ** shown, without diffs. This behavior is inverted if the
473 ** "show-version-diffs" setting is turned on.
474 */
475 void ci_page(void){
476 Stmt q;
477 int rid;
478 int isLeaf;
479 int verboseFlag; /* True to show diffs */
480 int sideBySide; /* True for side-by-side diffs */
481 u64 diffFlags; /* Flag parameter for text_diff() */
@@ -502,21 +502,21 @@
502 "SELECT uuid FROM plink, blob"
503 " WHERE plink.cid=%d AND blob.rid=plink.pid AND plink.isprim",
504 rid
505 );
506 isLeaf = is_a_leaf(rid);
507 db_prepare(&q,
508 "SELECT uuid, datetime(mtime, 'localtime'), user, comment,"
509 " datetime(omtime, 'localtime'), mtime"
510 " FROM blob, event"
511 " WHERE blob.rid=%d"
512 " AND event.objid=%d",
513 rid, rid
514 );
515 sideBySide = !is_false(PD("sbs","1"));
516 if( db_step(&q)==SQLITE_ROW ){
517 const char *zUuid = db_column_text(&q, 0);
518 char *zTitle = mprintf("Check-in [%.10s]", zUuid);
519 char *zEUser, *zEComment;
520 const char *zUser;
521 const char *zComment;
522 const char *zDate;
@@ -529,14 +529,14 @@
529 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
530 TAG_USER, rid);
531 zEComment = db_text(0,
532 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
533 TAG_COMMENT, rid);
534 zUser = db_column_text(&q, 2);
535 zComment = db_column_text(&q, 3);
536 zDate = db_column_text(&q,1);
537 zOrigDate = db_column_text(&q, 4);
538 @ <div class="section">Overview</div>
539 @ <table class="label-value">
540 @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
541 if( g.perm.Setup ){
542 @ (Record ID: %d(rid))
@@ -562,25 +562,25 @@
562 @ <tr><th>Original&nbsp;Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
563 }else{
564 @ <tr><th>Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
565 }
566 if( g.perm.Admin ){
567 db_prepare(&q,
568 "SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
569 " FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
570 " WHERE blob.rid=%d",
571 rid
572 );
573 if( db_step(&q)==SQLITE_ROW ){
574 const char *zIpAddr = db_column_text(&q, 0);
575 const char *zUser = db_column_text(&q, 1);
576 const char *zDate = db_column_text(&q, 2);
577 if( zUser==0 || zUser[0]==0 ) zUser = "unknown";
578 @ <tr><th>Received&nbsp;From:</th>
579 @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
580 }
581 db_finalize(&q);
582 }
583 if( g.perm.Hyperlink ){
584 const char *zProjName = db_get("project-name", "unnamed");
585 @ <tr><th>Timelines:</th><td>
586 @ %z(href("%R/timeline?f=%S",zUuid))family</a>
@@ -591,19 +591,19 @@
591 @ | %z(href("%R/timeline?d=%S",zUuid))descendants</a>
592 }
593 if( zParent && !isLeaf ){
594 @ | %z(href("%R/timeline?dp=%S",zUuid))both</a>
595 }
596 db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
597 " WHERE rid=%d AND tagtype>0 "
598 " AND tag.tagid=tagxref.tagid "
599 " AND +tag.tagname GLOB 'sym-*'", rid);
600 while( db_step(&q)==SQLITE_ROW ){
601 const char *zTagName = db_column_text(&q, 0);
602 @ | %z(href("%R/timeline?r=%T",zTagName))%h(zTagName)</a>
603 }
604 db_finalize(&q);
605
606
607 /* The Download: line */
608 if( g.perm.Zip ){
609 char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
@@ -630,11 +630,11 @@
630 @ </table>
631 }else{
632 style_header("Check-in Information");
633 login_anonymous_available();
634 }
635 db_finalize(&q);
636 showTags(rid, "");
637 if( zParent ){
638 @ <div class="section">Changes</div>
639 @ <div class="sectionmenu">
640 verboseFlag = g.zPath[0]!='c';
@@ -677,11 +677,11 @@
677 @ patch</a></div>
678 if( pRe ){
679 @ <p><b>Only differences that match regular expression "%h(zRe)"
680 @ are shown.</b></p>
681 }
682 db_prepare(&q,
683 "SELECT name,"
684 " mperm,"
685 " (SELECT uuid FROM blob WHERE rid=mlink.pid),"
686 " (SELECT uuid FROM blob WHERE rid=mlink.fid),"
687 " (SELECT name FROM filename WHERE filename.fnid=mlink.pfnid)"
@@ -691,19 +691,19 @@
691 " OR mlink.fnid NOT IN (SELECT pfnid FROM mlink WHERE mid=%d))"
692 " ORDER BY name /*sort*/",
693 rid, rid
694 );
695 diffFlags = construct_diff_flags(verboseFlag, sideBySide);
696 while( db_step(&q)==SQLITE_ROW ){
697 const char *zName = db_column_text(&q,0);
698 int mperm = db_column_int(&q, 1);
699 const char *zOld = db_column_text(&q,2);
700 const char *zNew = db_column_text(&q,3);
701 const char *zOldName = db_column_text(&q, 4);
702 append_file_change_line(zName, zOld, zNew, zOldName, diffFlags,pRe,mperm);
703 }
704 db_finalize(&q);
705 }
706 append_diff_javascript(sideBySide);
707 style_footer();
708 }
709
710
--- src/info.c
+++ src/info.c
@@ -471,11 +471,11 @@
471 ** With /vinfo and /info, only a list of the changed files are
472 ** shown, without diffs. This behavior is inverted if the
473 ** "show-version-diffs" setting is turned on.
474 */
475 void ci_page(void){
476 Stmt q1, q2, q3;
477 int rid;
478 int isLeaf;
479 int verboseFlag; /* True to show diffs */
480 int sideBySide; /* True for side-by-side diffs */
481 u64 diffFlags; /* Flag parameter for text_diff() */
@@ -502,21 +502,21 @@
502 "SELECT uuid FROM plink, blob"
503 " WHERE plink.cid=%d AND blob.rid=plink.pid AND plink.isprim",
504 rid
505 );
506 isLeaf = is_a_leaf(rid);
507 db_prepare(&q1,
508 "SELECT uuid, datetime(mtime, 'localtime'), user, comment,"
509 " datetime(omtime, 'localtime'), mtime"
510 " FROM blob, event"
511 " WHERE blob.rid=%d"
512 " AND event.objid=%d",
513 rid, rid
514 );
515 sideBySide = !is_false(PD("sbs","1"));
516 if( db_step(&q1)==SQLITE_ROW ){
517 const char *zUuid = db_column_text(&q1, 0);
518 char *zTitle = mprintf("Check-in [%.10s]", zUuid);
519 char *zEUser, *zEComment;
520 const char *zUser;
521 const char *zComment;
522 const char *zDate;
@@ -529,14 +529,14 @@
529 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
530 TAG_USER, rid);
531 zEComment = db_text(0,
532 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
533 TAG_COMMENT, rid);
534 zUser = db_column_text(&q1, 2);
535 zComment = db_column_text(&q1, 3);
536 zDate = db_column_text(&q1,1);
537 zOrigDate = db_column_text(&q1, 4);
538 @ <div class="section">Overview</div>
539 @ <table class="label-value">
540 @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
541 if( g.perm.Setup ){
542 @ (Record ID: %d(rid))
@@ -562,25 +562,25 @@
562 @ <tr><th>Original&nbsp;Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
563 }else{
564 @ <tr><th>Comment:</th><td class="infoComment">%!w(zComment)</td></tr>
565 }
566 if( g.perm.Admin ){
567 db_prepare(&q2,
568 "SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
569 " FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
570 " WHERE blob.rid=%d",
571 rid
572 );
573 if( db_step(&q2)==SQLITE_ROW ){
574 const char *zIpAddr = db_column_text(&q2, 0);
575 const char *zUser = db_column_text(&q2, 1);
576 const char *zDate = db_column_text(&q2, 2);
577 if( zUser==0 || zUser[0]==0 ) zUser = "unknown";
578 @ <tr><th>Received&nbsp;From:</th>
579 @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
580 }
581 db_finalize(&q2);
582 }
583 if( g.perm.Hyperlink ){
584 const char *zProjName = db_get("project-name", "unnamed");
585 @ <tr><th>Timelines:</th><td>
586 @ %z(href("%R/timeline?f=%S",zUuid))family</a>
@@ -591,19 +591,19 @@
591 @ | %z(href("%R/timeline?d=%S",zUuid))descendants</a>
592 }
593 if( zParent && !isLeaf ){
594 @ | %z(href("%R/timeline?dp=%S",zUuid))both</a>
595 }
596 db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
597 " WHERE rid=%d AND tagtype>0 "
598 " AND tag.tagid=tagxref.tagid "
599 " AND +tag.tagname GLOB 'sym-*'", rid);
600 while( db_step(&q2)==SQLITE_ROW ){
601 const char *zTagName = db_column_text(&q2, 0);
602 @ | %z(href("%R/timeline?r=%T",zTagName))%h(zTagName)</a>
603 }
604 db_finalize(&q2);
605
606
607 /* The Download: line */
608 if( g.perm.Zip ){
609 char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
@@ -630,11 +630,11 @@
630 @ </table>
631 }else{
632 style_header("Check-in Information");
633 login_anonymous_available();
634 }
635 db_finalize(&q1);
636 showTags(rid, "");
637 if( zParent ){
638 @ <div class="section">Changes</div>
639 @ <div class="sectionmenu">
640 verboseFlag = g.zPath[0]!='c';
@@ -677,11 +677,11 @@
677 @ patch</a></div>
678 if( pRe ){
679 @ <p><b>Only differences that match regular expression "%h(zRe)"
680 @ are shown.</b></p>
681 }
682 db_prepare(&q3,
683 "SELECT name,"
684 " mperm,"
685 " (SELECT uuid FROM blob WHERE rid=mlink.pid),"
686 " (SELECT uuid FROM blob WHERE rid=mlink.fid),"
687 " (SELECT name FROM filename WHERE filename.fnid=mlink.pfnid)"
@@ -691,19 +691,19 @@
691 " OR mlink.fnid NOT IN (SELECT pfnid FROM mlink WHERE mid=%d))"
692 " ORDER BY name /*sort*/",
693 rid, rid
694 );
695 diffFlags = construct_diff_flags(verboseFlag, sideBySide);
696 while( db_step(&q3)==SQLITE_ROW ){
697 const char *zName = db_column_text(&q3,0);
698 int mperm = db_column_int(&q3, 1);
699 const char *zOld = db_column_text(&q3,2);
700 const char *zNew = db_column_text(&q3,3);
701 const char *zOldName = db_column_text(&q3, 4);
702 append_file_change_line(zName, zOld, zNew, zOldName, diffFlags,pRe,mperm);
703 }
704 db_finalize(&q3);
705 }
706 append_diff_javascript(sideBySide);
707 style_footer();
708 }
709
710

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button