@@ -1221,20 +1221,7 @@ int parser_trim_buffers(parser_t *self) {
12211221 size_t new_cap ;
12221222 void * newptr ;
12231223
1224- /* trim stream */
1225- new_cap = _next_pow2 (self -> stream_len ) + 1 ;
1226- TRACE (("parser_trim_buffers: new_cap = %zu, stream_cap = %zu, lines_cap = %zu\n" ,
1227- new_cap , self -> stream_cap , self -> lines_cap ));
1228- if (new_cap < self -> stream_cap ) {
1229- TRACE (("parser_trim_buffers: new_cap < self->stream_cap, calling safe_realloc\n" ));
1230- newptr = safe_realloc ((void * ) self -> stream , new_cap );
1231- if (newptr == NULL ) {
1232- return PARSER_OUT_OF_MEMORY ;
1233- } else {
1234- self -> stream = newptr ;
1235- self -> stream_cap = new_cap ;
1236- }
1237- }
1224+ int i ;
12381225
12391226 /* trim words, word_starts */
12401227 new_cap = _next_pow2 (self -> words_len ) + 1 ;
@@ -1255,6 +1242,35 @@ int parser_trim_buffers(parser_t *self) {
12551242 }
12561243 }
12571244
1245+ /* trim stream */
1246+ new_cap = _next_pow2 (self -> stream_len ) + 1 ;
1247+ TRACE (("parser_trim_buffers: new_cap = %zu, stream_cap = %zu, lines_cap = %zu\n" ,
1248+ new_cap , self -> stream_cap , self -> lines_cap ));
1249+ if (new_cap < self -> stream_cap ) {
1250+ TRACE (("parser_trim_buffers: new_cap < self->stream_cap, calling safe_realloc\n" ));
1251+ newptr = safe_realloc ((void * ) self -> stream , new_cap );
1252+ if (newptr == NULL ) {
1253+ return PARSER_OUT_OF_MEMORY ;
1254+ } else {
1255+ // realloc sets errno when moving buffer?
1256+ if (self -> stream != newptr ) {
1257+ // uff
1258+ /* TRACE(("Moving word pointers\n")) */
1259+
1260+ self -> pword_start = newptr + self -> word_start ;
1261+
1262+ for (i = 0 ; i < self -> words_len ; ++ i )
1263+ {
1264+ self -> words [i ] = newptr + self -> word_starts [i ];
1265+ }
1266+ }
1267+
1268+ self -> stream = newptr ;
1269+ self -> stream_cap = new_cap ;
1270+
1271+ }
1272+ }
1273+
12581274 /* trim line_start, line_fields */
12591275 new_cap = _next_pow2 (self -> lines ) + 1 ;
12601276 if (new_cap < self -> lines_cap ) {
0 commit comments