lemon (tools): Fix Dereference of null pointer found by Clang analyzer
authorAlexis La Goutte <alexis.lagoutte@gmail.com>
Sat, 16 Jan 2016 11:30:02 +0000 (12:30 +0100)
committerMichael Mann <mmann78@netscape.net>
Fri, 22 Jan 2016 19:36:37 +0000 (19:36 +0000)
Change-Id: Ica08d9372fbe3809eb078e0285cba2a49cee6b8d
Reviewed-on: https://code.wireshark.org/review/13331
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
tools/lemon/lemon.c

index a5030d68dcd4e6297f351b76749d354a4fafb2b8..d9480ee1f392b6eb63790b5ae24d3a31f034da70 100644 (file)
@@ -3185,30 +3185,33 @@ void ReportOutput(struct lemon *lemp)
   if( fp==0 ) return;
   for(i=0; i<lemp->nxstate; i++){
     stp = lemp->sorted[i];
-    fprintf(fp,"State %d:\n",stp->statenum);
-    if( lemp->basisflag ) cfp=stp->bp;
-    else                  cfp=stp->cfp;
-    while( cfp ){
-      char buf[20];
-      if( cfp->dot==cfp->rp->nrhs ){
-        lemon_sprintf(buf,"(%d)",cfp->rp->index);
-        fprintf(fp,"    %5s ",buf);
-      }else{
-        fprintf(fp,"          ");
-      }
-      ConfigPrint(fp,cfp);
-      fprintf(fp,"\n");
+    if(stp){
+      fprintf(fp,"State %d:\n",stp->statenum);
+      if( lemp->basisflag ) cfp=stp->bp;
+      else                  cfp=stp->cfp;
+      while( cfp ){
+        char buf[20];
+        if( cfp->dot==cfp->rp->nrhs ){
+          lemon_sprintf(buf,"(%d)",cfp->rp->index);
+          fprintf(fp,"    %5s ",buf);
+        }else{
+          fprintf(fp,"          ");
+        }
+        ConfigPrint(fp,cfp);
+        fprintf(fp,"\n");
 #if 0
-      SetPrint(fp,cfp->fws,lemp);
-      PlinkPrint(fp,cfp->fplp,"To  ");
-      PlinkPrint(fp,cfp->bplp,"From");
+        SetPrint(fp,cfp->fws,lemp);
+        PlinkPrint(fp,cfp->fplp,"To  ");
+        PlinkPrint(fp,cfp->bplp,"From");
 #endif
-      if( lemp->basisflag ) cfp=cfp->bp;
-      else                  cfp=cfp->next;
-    }
-    fprintf(fp,"\n");
-    for(ap=stp->ap; ap; ap=ap->next){
-      if( PrintAction(ap,fp,30) ) fprintf(fp,"\n");
+        if( lemp->basisflag ) cfp=cfp->bp;
+        else                  cfp=cfp->next;
+
+      }
+      fprintf(fp,"\n");
+      for(ap=stp->ap; ap; ap=ap->next){
+        if( PrintAction(ap,fp,30) ) fprintf(fp,"\n");
+      }
     }
     fprintf(fp,"\n");
   }