diff options
author | Filipe Brandenburger <filbranden@google.com> | 2015-11-05 21:17:11 -0800 |
---|---|---|
committer | Filipe Brandenburger <filbranden@google.com> | 2015-11-05 21:19:54 -0800 |
commit | 3ff13c298d6d53293680c383768c3054fb9fcc30 (patch) | |
tree | a1547d2fd2da662f6e150896497cd1557ed4368e /src | |
parent | b85e1c2534ca3b396c2aaa7de384995b42d12e1b (diff) |
extract-word: replace an use of `goto` with structured code
Using `goto` might be appropriate for the "finish" cases but it was
really not necessary at this point of the code... Just use if/else
blocks to accomplish the same.
Confirmed that the test cases in test-extract-word keep working as
expected.
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/extract-word.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c index 23e3d557c0..1b3123bb7d 100644 --- a/src/basic/extract-word.c +++ b/src/basic/extract-word.c @@ -106,21 +106,19 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra if (flags & EXTRACT_CUNESCAPE_RELAX) { s[sz++] = '\\'; s[sz++] = c; - goto end_escape; - } - return -EINVAL; + } else + return -EINVAL; + } else { + (*p) += r - 1; + + if (c != 0) + s[sz++] = c; /* normal explicit char */ + else + sz += utf8_encode_unichar(s + sz, u); /* unicode chars we'll encode as utf8 */ } - - (*p) += r - 1; - - if (c != 0) - s[sz++] = c; /* normal explicit char */ - else - sz += utf8_encode_unichar(s + sz, u); /* unicode chars we'll encode as utf8 */ } else s[sz++] = c; -end_escape: backslash = false; } else if (quote) { /* inside either single or double quotes */ |