Browse code

highlighter: fix bug when highlighting files with many lines (didn't enlarge the buffer for linecolor_t because of missing operation on usedbuf)

Dario Rodriguez authored on 27/11/2020 17:13:41
Showing 1 changed files
... ...
@@ -517,7 +517,7 @@ hl_doline(redata_t *redata, highlighter_t *hl, int nline)
517 517
                                 if(prev_char=='/' && ptr[i]=='/') {
518 518
                                         mode=mode_in_linecomment;
519 519
                                         linecolor=hl_addtolinecolor(&opaque,hl,linecolor,posoffset+i-1,color_linecomment);
520
-                                         linecolor=hl_addtolinecolor(&opaque,hl,linecolor,posoffset+i,color_linecomment);
520
+                                        linecolor=hl_addtolinecolor(&opaque,hl,linecolor,posoffset+i,color_linecomment);
521 521
                                         continue;
522 522
                                 }
523 523
                                 if(prev_char=='/' && ptr[i]=='*') {
... ...
@@ -704,6 +704,7 @@ hl_C_getdirectives(char ***directives,int *ndirectives, int *maxlen)
704 704
 "line",
705 705
 "error",
706 706
 "pragma",
707
+NULL
707 708
 };
708 709
         if(directives==NULL || ndirectives==NULL)
709 710
                 return(-1);
... ...
@@ -767,6 +768,7 @@ hl_addtolinecolor(int *opaque, highlighter_t *hl,linecolor_t *linecolor,int poso
767 768
                 linecolor->len=1;
768 769
                 linecolor->color=color;
769 770
                 *opaque=1;
771
+                hl->usedbuf=line->off+line->len;
770 772
                 return(linecolor);
771 773
         }
772 774
         /* if posoff was already done, truncate */
... ...
@@ -800,7 +802,7 @@ hl_addtolinecolor(int *opaque, highlighter_t *hl,linecolor_t *linecolor,int poso
800 802
         linecolor->color=color;
801 803
         *opaque+=1;
802 804
         line->len+=sizeof(linecolor_t);
803
-        hl->usedbuf+=sizeof(linecolor_t);
805
+        hl->usedbuf=line->off+line->len;
804 806
         return(linecolor);
805 807
 }
806 808