Fix two problems in ast_str functions found while writing a unit test.
[asterisk/asterisk.git] / main / strings.c
index 0403724..6167e9b 100644 (file)
@@ -49,10 +49,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
  */
 
 #if (defined(MALLOC_DEBUG) && !defined(STANDALONE))
-int __ast_debug_str_helper(struct ast_str **buf, size_t max_len,
+int __ast_debug_str_helper(struct ast_str **buf, ssize_t max_len,
        int append, const char *fmt, va_list ap, const char *file, int lineno, const char *function)
 #else
-int __ast_str_helper(struct ast_str **buf, size_t max_len,
+int __ast_str_helper(struct ast_str **buf, ssize_t max_len,
        int append, const char *fmt, va_list ap)
 #endif
 {
@@ -106,12 +106,12 @@ int __ast_str_helper(struct ast_str **buf, size_t max_len,
                break;
        } while (1);
        /* update space used, keep in mind the truncation */
-       (*buf)->__AST_STR_USED = (res + offset > (*buf)->__AST_STR_LEN) ? (*buf)->__AST_STR_LEN : res + offset;
+       (*buf)->__AST_STR_USED = (res + offset > (*buf)->__AST_STR_LEN) ? (*buf)->__AST_STR_LEN - 1: res + offset;
 
        return res;
 }
 
-char *__ast_str_helper2(struct ast_str **buf, size_t maxlen, const char *src, size_t maxsrc, int append, int escapecommas)
+char *__ast_str_helper2(struct ast_str **buf, ssize_t maxlen, const char *src, size_t maxsrc, int append, int escapecommas)
 {
        int dynamic = 0;
        char *ptr = append ? &((*buf)->__AST_STR_STR[(*buf)->__AST_STR_USED]) : (*buf)->__AST_STR_STR;