Browse code

plugin_unsaved: fix bug that caused unnecessary unsaved buffer reallocs

Dario Rodriguez authored on 08/10/2020 21:40:39
Showing 1 changed files
... ...
@@ -412,13 +412,16 @@ redata_unsaved_add(redata_t *redata, redata_plugin_t *slot, undo_t *undo)
412 412
                 }
413 413
                 if(k==0) {
414 414
                         /* get mem */
415
-                        if((unsaved->sizebuf-unsaved->sizebuf)<maxsize) {
415
+                        if((unsaved->sizebuf-unsaved->usedbuf)<maxsize) {
416 416
                                 newsize=(unsaved->sizebuf+maxsize+UNSAVEDGROWSIZE-1)/UNSAVEDGROWSIZE;
417 417
                                 newsize*=UNSAVEDGROWSIZE;
418 418
                                 if((buf=realloc(unsaved->buf,newsize))==NULL)
419 419
                                         return(-1); /* insuf. mem. */
420 420
                                 unsaved->buf=buf;
421 421
                                 unsaved->sizebuf=newsize;
422
+#if 1
423
+fprintf(stderr,"UNSAVED: ADD realloc: %li\n",(long)newsize);
424
+#endif
422 425
                         }
423 426
                         buf=unsaved->buf+unsaved->usedbuf;
424 427
                 } else
... ...
@@ -486,13 +489,16 @@ redata_unsaved_unadd(redata_t *redata, redata_plugin_t *slot, undo_t *undo)
486 489
                 }
487 490
                 if(k==0) {
488 491
                         /* get mem */
489
-                        if((unsaved->sizebuf-unsaved->sizebuf)<maxsize) {
492
+                        if((unsaved->sizebuf-unsaved->usedbuf)<maxsize) {
490 493
                                 newsize=(unsaved->sizebuf+maxsize+UNSAVEDGROWSIZE-1)/UNSAVEDGROWSIZE;
491 494
                                 newsize*=UNSAVEDGROWSIZE;
492 495
                                 if((buf=realloc(unsaved->buf,newsize))==NULL)
493 496
                                         return(-1); /* insuf. mem. */
494 497
                                 unsaved->buf=buf;
495 498
                                 unsaved->sizebuf=newsize;
499
+#if 1
500
+fprintf(stderr,"UNSAVED: UNADD realloc: %li\n",(long)newsize);
501
+#endif
496 502
                         }
497 503
                         buf=unsaved->buf+unsaved->usedbuf;
498 504
                 }