Преглед изворни кода

Merge pull request #8379 from haberman/quadratic-mem-fix

Fixed quadratic memory use in array append for PHP and Ruby.
Joshua Haberman пре 4 година
родитељ
комит
72b02b56ea
2 измењених фајлова са 2 додато и 4 уклоњено
  1. 1 2
      php/ext/google/protobuf/php-upb.c
  2. 1 2
      ruby/ext/google/protobuf_c/ruby-upb.c

+ 1 - 2
php/ext/google/protobuf/php-upb.c

@@ -7047,10 +7047,9 @@ void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
 }
 
 bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
-  if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
+  if (!upb_array_resize(arr, arr->len + 1, arena)) {
     return false;
   }
-  arr->len++;
   upb_array_set(arr, arr->len - 1, val);
   return true;
 }

+ 1 - 2
ruby/ext/google/protobuf_c/ruby-upb.c

@@ -6663,10 +6663,9 @@ void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
 }
 
 bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
-  if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
+  if (!upb_array_resize(arr, arr->len + 1, arena)) {
     return false;
   }
-  arr->len++;
   upb_array_set(arr, arr->len - 1, val);
   return true;
 }