--- ../ed-1.12.reference/buffer.c 2015-06-07 19:10:25.000000000 +0200 +++ buffer.c 2015-07-17 22:28:38.280753869 +0200 @@ -444,7 +444,12 @@ int len; if( !lp ) return 0; - if( !p ) { set_error_msg( "Line too long" ); return 0; } + if( !p ) + { + set_error_msg( "Line too long" ); + free( lp ); + return 0; + } len = p - buf; /* out of position */ if( seek_write ) @@ -453,6 +458,7 @@ { show_strerror( 0, errno ); set_error_msg( "Cannot seek temp file" ); + free( lp ); return 0; } sfpos = ftell( sfp ); @@ -463,6 +469,7 @@ sfpos = -1; show_strerror( 0, errno ); set_error_msg( "Cannot write temp file" ); + free( lp ); return 0; } lp->pos = sfpos; lp->len = len;