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