From a870a9f788933a2fcbf5b46e82de0d0684998613 Mon Sep 17 00:00:00 2001 From: pancake Date: Wed, 8 Jul 2015 18:33:29 +0200 Subject: [PATCH] Refix for #2889 - that was nasty --- libr/core/core.c | 9 ++++++--- libr/util/calc.c | 8 +------- libr/util/num.c | 5 +++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/libr/core/core.c b/libr/core/core.c index dc13b7937028d..c84a45ad2da1e 100644 --- a/libr/core/core.c +++ b/libr/core/core.c @@ -146,9 +146,12 @@ static ut64 num_callback(RNum *userptr, const char *str, int *ok) { char *o = strdup (str+1); if (o) { q = r_num_calc_index (core->num, NULL); - r_str_replace_char (o, ']', 0); - n = r_num_math (core->num, o); - r_num_calc_index (core->num, q); + if (q) { + if (r_str_replace_char (o, ']', 0)>0) { + n = r_num_math (core->num, o); + r_num_calc_index (core->num, q); + } + } free (o); } } diff --git a/libr/util/calc.c b/libr/util/calc.c index ba63112956344..0078c5863a39d 100644 --- a/libr/util/calc.c +++ b/libr/util/calc.c @@ -145,18 +145,12 @@ static void cin_putback (RNum *num, RNumCalc *nc, char c) { } R_API const char *r_num_calc_index (RNum *num, const char *p) { - if (num == NULL) - return NULL; + if (!num) return NULL; if (p) { num->nc.calc_buf = p; num->nc.calc_len = strlen (p); num->nc.calc_i = 0; - } else { - num->nc.calc_buf = NULL; - num->nc.calc_len = 0; - num->nc.calc_i = 0; } - //if (num->nc.calc_i>num->nc.calc_len) return NULL; return num->nc.calc_buf + num->nc.calc_i; } diff --git a/libr/util/num.c b/libr/util/num.c index 041784d3ccbc3..907662d94f923 100644 --- a/libr/util/num.c +++ b/libr/util/num.c @@ -119,8 +119,9 @@ R_API ut64 r_num_get(RNum *num, const char *str) { if (ok) return ret; } - if (str[0]=='\'' && str[2]=='\'') - return (ut64)str[1]; + if (str[0] && str[1] && str[2]) + if (str[0]=='\'' && str[2]=='\'') + return (ut64)str[1]; len = strlen (str); if (len>3 && str[4] == ':') {