diff options
author | Werner Koch <[email protected]> | 2017-05-15 07:58:27 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-05-15 07:58:27 +0000 |
commit | 00b7767bc6fe309aa20375c859ebf708cfc7b9ea (patch) | |
tree | 95049d0230b05b0beb4520e166a450bff9dd6b86 /common | |
parent | tests: Also run all OpenPGP tests using keyrings. (diff) | |
download | gnupg-00b7767bc6fe309aa20375c859ebf708cfc7b9ea.tar.gz gnupg-00b7767bc6fe309aa20375c859ebf708cfc7b9ea.zip |
common: Let format_text return an error.
* common/stringhelp.c (format_text): Return NULL on error.
* common/t-stringhelp.c (test_format_text): Adjust for change.
* g10/gpgcompose.c (show_help): Abort on out of core.
* g10/tofu.c (ask_about_binding): Abort on format_text error.
(show_statistics): Ditto.
(show_warning): Ditto.
--
For better re-usability function in common/ shot better not use
xmalloc functions.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'common')
-rw-r--r-- | common/stringhelp.c | 36 | ||||
-rw-r--r-- | common/t-stringhelp.c | 5 |
2 files changed, 25 insertions, 16 deletions
diff --git a/common/stringhelp.c b/common/stringhelp.c index 509d327b0..3b481e862 100644 --- a/common/stringhelp.c +++ b/common/stringhelp.c @@ -1443,12 +1443,13 @@ compare_version_strings (const char *my_version, const char *req_version) /* Format a string so that it fits within about TARGET_COLS columns. - TEXT_IN is copied to a new buffer, which is returned. - Normally, target_cols will be 72 and max_cols is 80. */ + * TEXT_IN is copied to a new buffer, which is returned. Normally, + * target_cols will be 72 and max_cols is 80. On error NULL is + * returned and ERRNO is set. */ char * format_text (const char *text_in, int target_cols, int max_cols) { - const int do_debug = 0; + /* const int do_debug = 0; */ /* The character under consideration. */ char *p; @@ -1460,7 +1461,9 @@ format_text (const char *text_in, int target_cols, int max_cols) int copied_last_space = 0; char *text; - text = xstrdup (text_in); + text = xtrystrdup (text_in); + if (!text) + return NULL; p = line = text; while (1) @@ -1514,9 +1517,9 @@ format_text (const char *text_in, int target_cols, int max_cols) cols_with_left_space = last_space_cols; cols_with_right_space = cols; - if (do_debug) - log_debug ("Breaking: '%.*s'\n", - (int) ((uintptr_t) p - (uintptr_t) line), line); + /* if (do_debug) */ + /* log_debug ("Breaking: '%.*s'\n", */ + /* (int) ((uintptr_t) p - (uintptr_t) line), line); */ /* The number of columns away from TARGET_COLS. We prefer to underflow than to overflow. */ @@ -1528,21 +1531,22 @@ format_text (const char *text_in, int target_cols, int max_cols) max_cols. */ right_penalty += 4 * (cols_with_right_space - max_cols); - if (do_debug) - log_debug ("Left space => %d cols (penalty: %d); right space => %d cols (penalty: %d)\n", - cols_with_left_space, left_penalty, - cols_with_right_space, right_penalty); + /* if (do_debug) */ + /* log_debug ("Left space => %d cols (penalty: %d); " */ + /* "right space => %d cols (penalty: %d)\n", */ + /* cols_with_left_space, left_penalty, */ + /* cols_with_right_space, right_penalty); */ if (last_space_cols && left_penalty <= right_penalty) - /* Prefer the left space. */ { - if (do_debug) - log_debug ("Breaking at left space.\n"); + /* Prefer the left space. */ + /* if (do_debug) */ + /* log_debug ("Breaking at left space.\n"); */ p = last_space; } else { - if (do_debug) - log_debug ("Breaking at right space.\n"); + /* if (do_debug) */ + /* log_debug ("Breaking at right space.\n"); */ } if (! *p) diff --git a/common/t-stringhelp.c b/common/t-stringhelp.c index 869ca56f0..189fed1f9 100644 --- a/common/t-stringhelp.c +++ b/common/t-stringhelp.c @@ -886,6 +886,11 @@ test_format_text (void) struct test *test = &tests[i]; char *result = format_text (test->input, test->target_cols, test->max_cols); + if (!result) + { + fail (1); + exit (2); + } if (strcmp (result, test->expected) != 0) { printf ("%s: Test #%d failed.\nExpected: '%s'\nResult: '%s'\n", |