]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the parser generated by lemon always calls destructors on
authordrh <drh@noemail.net>
Tue, 16 Jan 2007 03:09:02 +0000 (03:09 +0000)
committerdrh <drh@noemail.net>
Tue, 16 Jan 2007 03:09:02 +0000 (03:09 +0000)
unused symbols, even if there is no action following the rule.
Ticket #2171. (CVS 3593)

FossilOrigin-Name: 0c5c1b931dfdc163f300f458e4b305c9f50e17f8

manifest
manifest.uuid
tool/lemon.c

index 39be5b72c64eae18432159e357aee526058e1b33..6fdd12e1151b1641fe9b5ebbe493475c0f33402c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sbug\sin\ssqlite3_prepare_v2()\sintroduced\sby\scheckin\s(3578)\sand\sreported\non\sthe\smailing\slist.\s(CVS\s3592)
-D 2007-01-12T23:43:43
+C Make\ssure\sthe\sparser\sgenerated\sby\slemon\salways\scalls\sdestructors\son\nunused\ssymbols,\seven\sif\sthere\sis\sno\saction\sfollowing\sthe\srule.\nTicket\s#2171.\s(CVS\s3593)
+D 2007-01-16T03:09:03
 F Makefile.in 7fa74bf4359aa899da5586e394d17735f221315f
 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -353,7 +353,7 @@ F test/where.test 8dcc1b1a6f17b6bad2dc6a9917eafe62d4ea57eb
 F test/where2.test 61d5b20d9bedc8788a773bbdc5b2ef887725928e
 F test/where3.test 0a30fe9808b0fa01c46d0fcf4fac0bf6cf75bb30
 F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b
-F tool/lemon.c 29d1bd8db8d5fbb1c577358632a96d716a435324
+F tool/lemon.c 2938bec507110397c937bd8a03b0c9596a709a04
 F tool/lempar.c 0a2a5cf96a98a64a5594625ad8fbdbe41dbaca50
 F tool/memleak.awk 4e7690a51bf3ed757e611273d43fe3f65b510133
 F tool/memleak2.awk 9cc20c8e8f3c675efac71ea0721ee6874a1566e8
@@ -424,7 +424,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P f4ee5d83e177e7ed9f180454c01d46a395a5715d
-R 4b0815a55b922b31192db8cde97bb03b
+P 87248470362f444f2339fee18d3624e8544f5256
+R 215b3e2a99296aa81351d696d69a7c89
 U drh
-Z 0214b95c1f9fb06ed7af23b4d12ac47e
+Z 05ac11539ce5473e2ed5468a4de2ce22
index e893ed948e8351bfc2e82f566b2e6d92615e53fd..875a8e59a2d2b884c5e640d731a295386065af1a 100644 (file)
@@ -1 +1 @@
-87248470362f444f2339fee18d3624e8544f5256
\ No newline at end of file
+0c5c1b931dfdc163f300f458e4b305c9f50e17f8
\ No newline at end of file
index 84d462a0770dce4d9dad35bd8ee1cfa9515b7968..19c2e42a60a167692e8cbc7fedb6b9d4a68878cd 100644 (file)
@@ -3198,7 +3198,7 @@ PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
   lhsused = 0;
 
   append_str(0,0,0,0);
-  for(cp=rp->code; *cp; cp++){
+  for(cp=(rp->code?rp->code:""); *cp; cp++){
     if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){
       char saved;
       for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++);
@@ -3261,8 +3261,10 @@ PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
       }
     }
   }
-  cp = append_str(0,0,0,0);
-  rp->code = Strsafe(cp);
+  if( rp->code ){
+    cp = append_str(0,0,0,0);
+    rp->code = Strsafe(cp?cp:"");
+  }
 }
 
 /* 
@@ -3830,7 +3832,7 @@ int mhflag;     /* Output in makeheaders format if true */
 
   /* Generate code which execution during each REDUCE action */
   for(rp=lemp->rule; rp; rp=rp->next){
-    if( rp->code ) translate_code(lemp, rp);
+    translate_code(lemp, rp);
   }
   for(rp=lemp->rule; rp; rp=rp->next){
     struct rule *rp2;