File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -905,27 +905,37 @@ onig_region_resize(OnigRegion* region, int n)
905905 if (n < ONIG_NREGION )
906906 n = ONIG_NREGION ;
907907
908- size_t region_half_sz = n * sizeof (OnigPosition );
909908 if (region -> allocated == 0 ) {
910- region -> beg = (OnigPosition * )xmalloc (region_half_sz * 2 );
909+ region -> beg = (OnigPosition * )xmalloc (n * sizeof ( OnigPosition ) );
911910 if (region -> beg == 0 )
912911 return ONIGERR_MEMORY ;
913912
914- region -> end = (OnigPosition * )region -> beg + n ;
913+ region -> end = (OnigPosition * )xmalloc (n * sizeof (OnigPosition ));
914+ if (region -> end == 0 ) {
915+ xfree (region -> beg );
916+ return ONIGERR_MEMORY ;
917+ }
915918
916919 region -> allocated = n ;
917920 }
918921 else if (region -> allocated < n ) {
919922 OnigPosition * tmp ;
920923
921924 region -> allocated = 0 ;
922- tmp = (OnigPosition * )xrealloc (region -> beg , region_half_sz * 2 );
925+ tmp = (OnigPosition * )xrealloc (region -> beg , n * sizeof ( OnigPosition ) );
923926 if (tmp == 0 ) {
924927 xfree (region -> beg );
928+ xfree (region -> end );
925929 return ONIGERR_MEMORY ;
926930 }
927931 region -> beg = tmp ;
928- region -> end = (OnigPosition * )region -> beg + n ;
932+ tmp = (OnigPosition * )xrealloc (region -> end , n * sizeof (OnigPosition ));
933+ if (tmp == 0 ) {
934+ xfree (region -> beg );
935+ xfree (region -> end );
936+ return ONIGERR_MEMORY ;
937+ }
938+ region -> end = tmp ;
929939
930940 region -> allocated = n ;
931941 }
@@ -988,6 +998,7 @@ onig_region_free(OnigRegion* r, int free_self)
988998 if (r ) {
989999 if (r -> allocated > 0 ) {
9901000 xfree (r -> beg );
1001+ xfree (r -> end );
9911002 }
9921003#ifdef USE_CAPTURE_HISTORY
9931004 history_root_free (r );
You can’t perform that action at this time.
0 commit comments