]> Kevux Git Server - fll/commitdiff
Update: relax parameter restrictions in f_iki_read().
authorKevin Day <thekevinday@gmail.com>
Tue, 10 Nov 2020 02:15:20 +0000 (20:15 -0600)
committerKevin Day <thekevinday@gmail.com>
Tue, 10 Nov 2020 02:15:20 +0000 (20:15 -0600)
Return f_data_not, F_data_not_stop, or F_data_not_eos if there is no data instead of F_parameter with an error bit.

level_0/f_iki/c/iki.c
level_0/f_iki/c/iki.h

index 0c5e1ef4f1392084f04a71aeac241c72072868ed..c4db092a5b19c27e5027f89380cc2f254e27ca80 100644 (file)
@@ -59,15 +59,24 @@ extern "C" {
   f_return_status f_iki_read(f_string_static_t *buffer, f_string_range_t *range, f_iki_variable_t *variable, f_iki_vocabulary_t *vocabulary, f_iki_content_t *content) {
     #ifndef _di_level_0_parameter_checking_
       if (!buffer) return F_status_set_error(F_parameter);
-      if (!buffer->used) return F_status_set_error(F_parameter);
       if (!range) return F_status_set_error(F_parameter);
       if (!variable) return F_status_set_error(F_parameter);
       if (!vocabulary) return F_status_set_error(F_parameter);
       if (!content) return F_status_set_error(F_parameter);
-      if (range->start > range->stop) return F_status_set_error(F_parameter);
-      if (range->start >= buffer->used) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
+    if (!buffer->used) {
+      return F_data_not;
+    }
+
+    if (range->start > range->stop) {
+      return F_data_not_stop;
+    }
+
+    if (range->start >= buffer->used) {
+      return F_data_not_eos;
+    }
+
     f_status_t status = F_none;
 
     f_string_length_t width_max = 0;
index 7a5d00bdb2f72124fa133689cbcd307dea2d0462..4f7475a166663e1ca87c2665771091489fa10850 100644 (file)
@@ -134,8 +134,9 @@ extern "C" {
  *   F_none on success and an IKI vocabulary name was found.
  *   F_none_eos on success and an IKI vocabulary name was found and end of string was reached.
  *   F_none_stop on success and an IKI vocabulary name was found and stop point was reached.
- *   F_data_not_eos on success and EOS was reached, but there were no IKI vocabularie names found.
- *   F_data_not_stop on success and stop point was reached, but there were no IKI vocabularie names found.
+ *   F_data_not on success, but there were no IKI vocabulary names found.
+ *   F_data_not_eos on success and EOS was reached, but there were no IKI vocabulary names found.
+ *   F_data_not_stop on success and stop point was reached, but there were no IKI vocabulary names found.
  *   F_memory_reallocation (with error bit) on memory reallocation error.
  *   F_parameter (with error bit) if a parameter is invalid.
  *   F_string_too_large (with error bit) if a string length is too large to store in the buffer.