]> Kevux Git Server - fll/commitdiff
Bugfix: conversion needs to properly handle '0x' and similar
authorKevin Day <thekevinday@gmail.com>
Wed, 24 Jun 2020 05:14:04 +0000 (00:14 -0500)
committerKevin Day <thekevinday@gmail.com>
Wed, 24 Jun 2020 05:14:04 +0000 (00:14 -0500)
Invalid Parameter happens when there is no following number after the x in '0x'.
This is because the start and stop range were not being checked after applying the offset.

level_0/f_conversion/c/conversion.c

index 963abe9c45a31bf04af9e499b589211560931a72..7b9cf517fbe773ec4f19bead7e0439b9ccc2cde1 100644 (file)
@@ -910,8 +910,7 @@ extern "C" {
     #ifndef _di_level_0_parameter_checking_
       if (string == 0) return F_status_set_error(F_parameter);
       if (number == 0) return F_status_set_error(F_parameter);
-      if (range.start < 0) return F_status_set_error(F_parameter);
-      if (range.stop < range.start) return F_status_set_error(F_parameter);
+      if (range.start > range.stop) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
 
     if (string[0] == 0) {
@@ -1022,6 +1021,10 @@ extern "C" {
     location_offset.start = range.start + offset;
     location_offset.stop = range.stop;
 
+    if (range.start + offset > range.stop) {
+      return F_status_set_error(F_number);
+    }
+
     if (mode == 10) {
       status = f_conversion_string_to_decimal_unsigned(string, number, location_offset);
     }