]> Kevux Git Server - fll/commitdiff
Regression: Invalid type used when allocating string, f_string_t should instead be...
authorKevin Day <kevin@kevux.org>
Sun, 6 Aug 2023 00:38:12 +0000 (19:38 -0500)
committerKevin Day <kevin@kevux.org>
Sun, 6 Aug 2023 00:38:12 +0000 (19:38 -0500)
I noticed odd differences between the 0.6.x and the 0.7.x in terms of memory usage.
I discovered this to be due to a bug where the f_string_t is being used when the type should be instead f_char_t.
This is likely a bug introduced in some past refactor.

level_0/f_string/c/private-string.c
level_0/f_string/c/string/dynamic.c
level_0/f_string/c/string/private-dynamics.c
level_0/f_string/c/string/private-map_multis.c
level_0/f_string/c/string/private-maps.c
level_1/fl_directory/c/private-directory.c
level_2/fll_execute/c/private-execute.c

index 58080d570d82d3924decb0651c896d642b0a6054..f0556810f8be00f9f87e8c292c27c856074c6504 100644 (file)
@@ -10,7 +10,7 @@ extern "C" {
   f_status_t private_f_string_append(const f_string_t source, const f_number_unsigned_t length, f_string_dynamic_t * const destination) {
 
     {
-      const f_status_t status = f_memory_array_increase_by(length + 1, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+      const f_status_t status = f_memory_array_increase_by(length + 1, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
       if (F_status_is_error(status)) return status;
     }
 
@@ -38,7 +38,7 @@ extern "C" {
 
     if (size + 1 > F_string_t_size_d) return F_status_set_error(F_string_too_large);
 
-    status = f_memory_array_increase_by(size + 1, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+    status = f_memory_array_increase_by(size + 1, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
     if (F_status_is_error(status)) return status;
 
     f_number_unsigned_t first = 0;
@@ -81,7 +81,7 @@ extern "C" {
     if (destination->used + length + 1 > F_string_t_size_d) return F_status_set_error(F_string_too_large);
 
     {
-      const f_status_t status = f_memory_array_increase_by(length + 1, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+      const f_status_t status = f_memory_array_increase_by(length + 1, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
       if (F_status_is_error(status)) return status;
     }
 
@@ -116,7 +116,7 @@ extern "C" {
         if (i > first) {
           size = i - first;
 
-          status = f_memory_array_increase_by(size + 1, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+          status = f_memory_array_increase_by(size + 1, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
           if (F_status_is_error(status)) return status;
 
           memmove(destination->string + offset + size, destination->string + offset, sizeof(f_char_t) * (destination->used - offset));
@@ -134,7 +134,7 @@ extern "C" {
           if (i > first) {
             size = i - first;
 
-            status = f_memory_array_increase_by(size + 1, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+            status = f_memory_array_increase_by(size + 1, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
             if (F_status_is_error(status)) return status;
 
             memmove(destination->string + offset + size, destination->string + offset, sizeof(f_char_t) * (destination->used - offset));
index 2e59c70472cfd5f3429639a643a005127288b78d..14d95c508f50407be2969d769d14702b8825409c 100644 (file)
@@ -12,7 +12,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_adjust(length, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_adjust(length, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_adjust_
 
@@ -110,7 +110,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_decimate_by(amount, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_decimate_by(amount, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_decimate_by_
 
@@ -120,7 +120,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_decrease_by(amount, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_decrease_by(amount, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_decrease_by_
 
@@ -130,7 +130,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_increase(step, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_increase(step, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_increase_
 
@@ -140,7 +140,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_increase_by(amount, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_increase_by(amount, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_increase_by_
 
@@ -614,7 +614,7 @@ extern "C" {
       if (!structure) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
-    return f_memory_array_resize(length, sizeof(f_string_t), (void **) &structure->string, &structure->used, &structure->size);
+    return f_memory_array_resize(length, sizeof(f_char_t), (void **) &structure->string, &structure->used, &structure->size);
   }
 #endif // _di_f_string_dynamic_resize_
 
@@ -693,7 +693,7 @@ extern "C" {
     if (destination->used == F_string_t_size_d) return F_status_set_error(F_string_too_large);
 
     {
-      const f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+      const f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
       if (F_status_is_error(status)) return status;
     }
 
@@ -716,7 +716,7 @@ extern "C" {
     if (destination->used == F_string_t_size_d) return F_status_set_error(F_string_too_large);
 
     {
-      const f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_string_t), (void **) &destination->string, &destination->used, &destination->size);
+      const f_status_t status = f_memory_array_increase(F_memory_default_allocation_small_d, sizeof(f_char_t), (void **) &destination->string, &destination->used, &destination->size);
       if (F_status_is_error(status)) return status;
     }
 
index b36949b3cdf939f986b848fe3e8fdbe67687686f..5b685d848fc602280d33de737fb5cb87b3060bd8 100644 (file)
@@ -14,7 +14,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = length; i < structure->size; ++i) {
 
-      status = f_memory_array_adjust(0, sizeof(f_string_t), (void **) &structure->array[i].string, &structure->array[i].used, &structure->array[i].size);
+      status = f_memory_array_adjust(0, sizeof(f_char_t), (void **) &structure->array[i].string, &structure->array[i].used, &structure->array[i].size);
       if (F_status_is_error(status)) return status;
     } // for
 
index 8001b1b9ffec8f812128f45f69116ae8926cf301..f607bbd7bd59710774efbf4d32f58f008d20df7a 100644 (file)
@@ -15,7 +15,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = length; i < structure->size; ++i) {
 
-      status = f_memory_array_adjust(0, sizeof(f_string_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
+      status = f_memory_array_adjust(0, sizeof(f_char_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
       if (F_status_is_error(status)) return status;
 
       status = private_f_string_dynamics_adjust(0, &structure->array[i].value);
@@ -63,7 +63,7 @@ extern "C" {
 
     for (f_number_unsigned_t i = length; i < structure->size; ++i) {
 
-      status = f_memory_array_resize(0, sizeof(f_string_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
+      status = f_memory_array_resize(0, sizeof(f_char_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
       if (F_status_is_error(status)) return status;
 
       status = private_f_string_dynamics_resize(0, &structure->array[i].value);
index f02f0d6fbe222e052070afee31a1843420222d44..f52e9d8fe05176a47b3eed9afe70de526ee03ad4 100644 (file)
@@ -14,10 +14,10 @@ extern "C" {
 
     for (f_number_unsigned_t i = length; i < structure->size; ++i) {
 
-      status = f_memory_array_adjust(0, sizeof(f_string_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
+      status = f_memory_array_adjust(0, sizeof(f_char_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
       if (F_status_is_error(status)) return status;
 
-      status = f_memory_array_adjust(0, sizeof(f_string_t), (void **) &structure->array[i].value.string, &structure->array[i].value.used, &structure->array[i].value.size);
+      status = f_memory_array_adjust(0, sizeof(f_char_t), (void **) &structure->array[i].value.string, &structure->array[i].value.used, &structure->array[i].value.size);
       if (F_status_is_error(status)) return status;
     } // for
 
@@ -62,10 +62,10 @@ extern "C" {
 
     for (f_number_unsigned_t i = length; i < structure->size; ++i) {
 
-      status = f_memory_array_resize(0, sizeof(f_string_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
+      status = f_memory_array_resize(0, sizeof(f_char_t), (void **) &structure->array[i].name.string, &structure->array[i].name.used, &structure->array[i].name.size);
       if (F_status_is_error(status)) return status;
 
-      status = f_memory_array_resize(0, sizeof(f_string_t), (void **) &structure->array[i].value.string, &structure->array[i].value.used, &structure->array[i].value.size);
+      status = f_memory_array_resize(0, sizeof(f_char_t), (void **) &structure->array[i].value.string, &structure->array[i].value.used, &structure->array[i].value.size);
       if (F_status_is_error(status)) return status;
     } // for
 
index 335569b6dfe49e6c8f3f8eb2eb6ec79f6a936771..4d011f70ddacc3209834a802eb930a3058180a3b 100644 (file)
@@ -301,7 +301,7 @@ extern "C" {
 
       // There is no reason to include "." and ".." in the directory listing.
       if (!strncmp(name_directory.string, "..", 3) || !strncmp(name_directory.string, ".", 2)) {
-        f_memory_resize(1, 0, sizeof(f_string_t), (void **) & entity[i]);
+        f_memory_resize(1, 0, sizeof(f_char_t), (void **) & entity[i]);
 
         continue;
       }
index 7fcc9d13a8b581f6af38b1ed9697ffa25001ccfb..f834dc79c9a52d69724afb9b6d5cd96150a6048b 100644 (file)
@@ -553,7 +553,7 @@ extern "C" {
   void private_fll_execute_path_arguments_fixate(const f_string_static_t program_path, const f_string_statics_t arguments, const f_string_t last_slash, const bool fixated_is, f_string_static_t program_name, f_string_t fixed_arguments[]) {
 
     memset(program_name.string, 0, sizeof(f_char_t) * (program_name.used + 1));
-    memset(fixed_arguments, 0, sizeof(f_string_t) * (arguments.used + 2));
+    memset(fixed_arguments, 0, sizeof(f_char_t) * (arguments.used + 2));
 
     memcpy(program_name.string, last_slash ? last_slash + 1 : program_path.string, sizeof(f_char_t) * program_name.used);