diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wordsplit.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wordsplit.c b/src/wordsplit.c index 48312bb..b38dde4 100644 --- a/src/wordsplit.c +++ b/src/wordsplit.c | |||
@@ -2686,6 +2686,8 @@ wordsplit_run (const char *command, size_t length, struct wordsplit *wsp, | |||
2686 | int rc; | 2686 | int rc; |
2687 | size_t start; | 2687 | size_t start; |
2688 | 2688 | ||
2689 | /* Initialize error context early */ | ||
2690 | wsp->ws_errctx = NULL; | ||
2689 | if (!command) | 2691 | if (!command) |
2690 | { | 2692 | { |
2691 | if (!(flags & WRDSF_INCREMENTAL)) | 2693 | if (!(flags & WRDSF_INCREMENTAL)) |
@@ -2796,6 +2798,10 @@ wordsplit_clearerr (struct wordsplit *ws) | |||
2796 | void | 2798 | void |
2797 | wordsplit_free (struct wordsplit *ws) | 2799 | wordsplit_free (struct wordsplit *ws) |
2798 | { | 2800 | { |
2801 | if (ws->ws_errno == WRDSE_USAGE) | ||
2802 | /* Usage error: the structure is not properly initialized and there's | ||
2803 | nothing to free. */ | ||
2804 | return; | ||
2799 | wordsplit_clearerr (ws); | 2805 | wordsplit_clearerr (ws); |
2800 | wordsplit_free_nodes (ws); | 2806 | wordsplit_free_nodes (ws); |
2801 | wordsplit_free_words (ws); | 2807 | wordsplit_free_words (ws); |