From: Ken Hornstein Date: Tue, 31 Dec 2013 20:19:21 +0000 (-0500) Subject: Make sure that branching instructions are traced even if we're executing the X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/253f3a96f00470bfc69ec3c5978bd152b708c255?hp=1c08be1b270cce9c287aa3c83454969cdec5b7de Make sure that branching instructions are traced even if we're executing the branch (previously, they would only be traced if they did not execute the branch). --- diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index a7ad1249..ab5940ab 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -518,6 +518,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_S: if (!(value = (str && *str))) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -525,6 +528,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_S_NULL: if (!(value = (str == NULL || *str == 0))) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -532,6 +538,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_V_EQ: if (value != fmt->f_value) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -539,6 +548,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_V_NE: if (value == fmt->f_value) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -546,6 +558,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_V_GT: if (value <= fmt->f_value) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -553,6 +568,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_MATCH: if (!(value = (str && match (str, fmt->f_text)))) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -567,6 +585,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, case FT_IF_AMATCH: if (!(value = (str && uprf (str, fmt->f_text)))) { + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue; } @@ -597,6 +618,9 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat, break; case FT_GOTO: + if (callbacks && callbacks->trace_func) + callbacks->trace_func(callbacks->trace_context, fmt, value, + str, scanl); fmt += fmt->f_skip; continue;