changeset 1422:88aaf45c7fbb draft

Fix a couple patch bugs concerning error output.
author Rob Landley <rob@landley.net>
date Tue, 05 Aug 2014 19:27:02 -0500
parents 30014454681f
children 8059cfd67acd
files toys/posix/patch.c
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/toys/posix/patch.c	Mon Aug 04 19:28:41 2014 -0500
+++ b/toys/posix/patch.c	Tue Aug 05 19:27:02 2014 -0500
@@ -93,7 +93,6 @@
 static void fail_hunk(void)
 {
   if (!TT.current_hunk) return;
-  dlist_terminate(TT.current_hunk);
 
   fprintf(stderr, "Hunk %d FAILED %ld/%ld.\n",
       TT.hunknum, TT.oldline, TT.newline);
@@ -137,7 +136,6 @@
   int (*lcmp)(char *aa, char *bb);
 
   lcmp = (toys.optflags & FLAG_l) ? (void *)loosecmp : (void *)strcmp;
-
   dlist_terminate(TT.current_hunk);
 
   // Match EOF if there aren't as many ending context lines as beginning
@@ -203,9 +201,12 @@
         if (PATCH_DEBUG) {
           int bug = 0;
 
-          while (plist->data[bug] == check->data[bug]) bug++;
-          fprintf(stderr, "NOT(%d:%d!=%d): %s\n", bug, plist->data[bug],
-            check->data[bug], plist->data);
+          if (!plist) fprintf(stderr, "NULL plist\n");
+          else {
+            while (plist->data[bug] == check->data[bug]) bug++;
+            fprintf(stderr, "NOT(%d:%d!=%d): %s\n", bug, plist->data[bug],
+              check->data[bug], plist->data);
+          }
         }
 
         TT.state = 3;
@@ -297,6 +298,7 @@
         if (!TT.oldlen && !TT.newlen) state = apply_one_hunk();
         continue;
       }
+      dlist_terminate(TT.current_hunk);
       fail_hunk();
       state = 0;
       continue;