string: Set result pointer to NULL on errors.
[paraslash.git] / string.c
index 05febebf2e9b39c6e907b53cf05837cef94e8fb1..0a32c0f48b3b8fc9a1b5194587fc10068789a064 100644 (file)
--- a/string.c
+++ b/string.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2004-2010 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2011 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -521,9 +521,9 @@ __printf_2_3 int para_printf(struct para_buffer *b, const char *fmt, ...)
        }
 }
 
-/** \cond LLONG_MAX and LLONG_LIN might not be defined. */
+/** \cond LLONG_MAX and LLONG_MIN might not be defined. */
 #ifndef LLONG_MAX
-#define LLONG_MAX (1 << (sizeof(long) - 1))
+#define LLONG_MAX 9223372036854775807LL
 #endif
 #ifndef LLONG_MIN
 #define LLONG_MIN (-LLONG_MAX - 1LL)
@@ -615,7 +615,7 @@ int get_loglevel_by_name(const char *txt)
        return -1;
 }
 
-static int get_next_word(const char *buf, const char *delim,  char **word)
+static int get_next_word(const char *buf, const char *delim, char **word)
 {
        enum line_state_flags {LSF_HAVE_WORD = 1, LSF_BACKSLASH = 2,
                LSF_SINGLE_QUOTE = 4, LSF_DOUBLE_QUOTE = 8};
@@ -719,6 +719,8 @@ void free_argv(char **argv)
 {
        int i;
 
+       if (!argv)
+               return;
        for (i = 0; argv[i]; i++)
                free(argv[i]);
        free(argv);
@@ -760,6 +762,7 @@ err:
        while (num_words > 0)
                free(argv[--num_words]);
        free(argv);
+       *result = NULL;
        return ret;
 }