Go ahead and make this write unconditional. Making it conditional is more work
authorRussell Bryant <russell@russellbryant.com>
Wed, 29 Nov 2006 17:37:31 +0000 (17:37 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 29 Nov 2006 17:37:31 +0000 (17:37 +0000)
in both the append and non-append modes.  Also, always truncating the partial
write makes the behavior of the function more consistent, where in any type of
write, no partial result is left in the buffer.

Thanks for the feedback, luigi

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48109 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/utils.c

index 555800b..d374e69 100644 (file)
@@ -997,16 +997,8 @@ int ast_dynamic_str_thread_build_va(struct ast_dynamic_str **buf, size_t max_len
                        return AST_DYNSTR_BUILD_FAILED;
                (*buf)->len = need;
 
-               /* Truncate the previous attempt.  This is only needed for the
-                * append operation because if the write is from the beginning,
-                * it will get automatically overwritten when this function
-                * gets called again.  When appending, if this was not done,
-                * this function would be called over and over again, because
-                * each attempt would be appending more and more partial
-                * strings, never having enough space to finish.
-                */ 
-               if (append)
-                       (*buf)->str[offset] = '\0';
+               /* Truncate the partial write. */
+               (*buf)->str[offset] = '\0';
 
                if (ts)
                        pthread_setspecific(ts->key, *buf);