[fix] Check for result.len > 0 in false start continuation numex parsing, plus additional safety check during replacement

This commit is contained in:
Al
2015-12-24 02:26:29 -05:00
parent 507dd631f8
commit deeb8f007e

View File

@@ -706,7 +706,7 @@ numex_result_array *convert_numeric_expressions(char *str, char *lang) {
complete_token = true;
prev_state = NULL_NUMEX_SEARCH_STATE;
if (idx == len) {
if (idx == len && result.len > 0) {
results = (results != NULL) ? results : numex_result_array_new_size(1);
numex_result_array_push(results, result);
break;
@@ -964,7 +964,13 @@ char *replace_numeric_expressions(char *str, char *lang) {
for (int i = 0; i < results->n; i++) {
numex_result_t result = results->a[i];
if (result.len == 0) {
continue;
}
end = result.start;
log_debug("lang=%s, start = %zu, len = %zu, value=%lld\n", lang, result.start, result.len, result.value);
char numeric_string[INT64_MAX_STRING_SIZE] = {0};
sprintf(numeric_string, "%" PRId64, result.value);