Blame SOURCES/ed-1.14.2-fix-resource-leaks.patch

acca6e
diff -urN ed-1.14.2/carg_parser.c ed-1.14.2_patched/carg_parser.c
acca6e
--- ed-1.14.2/carg_parser.c	2017-01-12 23:05:08.000000000 +0100
acca6e
+++ ed-1.14.2_patched/carg_parser.c	2018-10-04 11:12:59.857570021 +0200
acca6e
@@ -204,6 +204,8 @@
acca6e
   int non_options_size = 0;		/* number of skipped non-options */
acca6e
   int argind = 1;			/* index in argv */
acca6e
   int i;
acca6e
+  int Status = 0;
acca6e
+  void * tmp = NULL;
acca6e
 
acca6e
   ap->data = 0;
acca6e
   ap->error = 0;
acca6e
@@ -223,9 +225,15 @@
acca6e
       if( ch2 == '-' )
acca6e
         {
acca6e
         if( !argv[argind][2] ) { ++argind; break; }	/* we found "--" */
acca6e
-        else if( !parse_long_option( ap, opt, arg, options, &argind ) ) return 0;
acca6e
+        else if( !parse_long_option( ap, opt, arg, options, &argind ) ) {
acca6e
+          Status = 0;
acca6e
+          goto Exit;
acca6e
+          }
acca6e
         }
acca6e
-      else if( !parse_short_option( ap, opt, arg, options, &argind ) ) return 0;
acca6e
+      else if( !parse_short_option( ap, opt, arg, options, &argind ) ) {
acca6e
+          Status = 0;
acca6e
+          goto Exit;
acca6e
+          }
acca6e
       if( ap->error ) break;
acca6e
       }
acca6e
     else
acca6e
@@ -234,7 +242,7 @@
acca6e
         { if( !push_back_record( ap, 0, argv[argind++] ) ) return 0; }
acca6e
       else
acca6e
         {
acca6e
-        void * tmp = ap_resize_buffer( non_options,
acca6e
+        tmp = ap_resize_buffer( non_options,
acca6e
                        ( non_options_size + 1 ) * sizeof *non_options );
acca6e
         if( !tmp ) return 0;
acca6e
         non_options = (const char **)tmp;
acca6e
@@ -246,12 +254,21 @@
acca6e
   else
acca6e
     {
acca6e
     for( i = 0; i < non_options_size; ++i )
acca6e
-      if( !push_back_record( ap, 0, non_options[i] ) ) return 0;
acca6e
+      if( !push_back_record( ap, 0, non_options[i] ) ) {
acca6e
+        Status = 0;
acca6e
+        goto Exit;
acca6e
+      }
acca6e
     while( argind < argc )
acca6e
-      if( !push_back_record( ap, 0, argv[argind++] ) ) return 0;
acca6e
+      if( !push_back_record( ap, 0, argv[argind++] ) ) {
acca6e
+        Status = 0;
acca6e
+        goto Exit;
acca6e
+      }
acca6e
     }
acca6e
+  Status = 1;
acca6e
+  goto Exit;
acca6e
+Exit:
acca6e
   if( non_options ) free( non_options );
acca6e
-  return 1;
acca6e
+  return(Status);
acca6e
   }
acca6e
 
acca6e
 
acca6e
diff -urN ed-1.14.2/main_loop.c ed-1.14.2_patched/main_loop.c
acca6e
--- ed-1.14.2/main_loop.c	2017-02-22 17:25:34.000000000 +0100
acca6e
+++ ed-1.14.2_patched/main_loop.c	2018-10-01 17:19:46.555004735 +0200
acca6e
@@ -614,7 +614,7 @@
acca6e
                    !print_lines( second_addr, second_addr, 0 ) )
acca6e
                 return ERR;
acca6e
               break;
acca6e
-    case '#': while( *(*ibufpp)++ != '\n' ) ;
acca6e
+    case '#': while( *(*ibufpp)++ != '\n' ) {} ;
acca6e
               break;
acca6e
     default : set_error_msg( "Unknown command" ); return ERR;
acca6e
     }