[asterisk-commits] russell: branch russell/ast_verbose_threadstorage r38544 - /team/russell/ast_...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sun Jul 30 20:45:02 MST 2006


Author: russell
Date: Sun Jul 30 22:45:02 2006
New Revision: 38544

URL: http://svn.digium.com/view/asterisk?rev=38544&view=rev
Log:
add more code comments

Modified:
    team/russell/ast_verbose_threadstorage/include/asterisk/threadstorage.h

Modified: team/russell/ast_verbose_threadstorage/include/asterisk/threadstorage.h
URL: http://svn.digium.com/view/asterisk/team/russell/ast_verbose_threadstorage/include/asterisk/threadstorage.h?rev=38544&r1=38543&r2=38544&view=diff
==============================================================================
--- team/russell/ast_verbose_threadstorage/include/asterisk/threadstorage.h (original)
+++ team/russell/ast_verbose_threadstorage/include/asterisk/threadstorage.h Sun Jul 30 22:45:02 2006
@@ -256,7 +256,7 @@
 	({                                                                       \
 		int __res;                                                       \
 		while ((__res = __ast_dynamic_str_thread_printf_va(buf, max_len, \
-			ts, fmt, ap)) == AST_DYNSTR_PRINTF_RETRY) {               \
+			ts, fmt, ap)) == AST_DYNSTR_PRINTF_RETRY) {              \
 			va_end(ap);                                              \
 			va_start(ap, fmt);                                       \
 		}                                                                \
@@ -276,16 +276,28 @@
 	int res;
 
 	res = vsnprintf((*buf)->str, (*buf)->len, fmt, ap);
-	
+
+	/* Check to see if there was not enough space in the string buffer to prepare
+	 * the string.  Also, if a maximum length is present, make sure the current
+	 * length is less than the maximum before increasing the size. */
 	if ((res + 1) > (*buf)->len && (max_len ? ((*buf)->len < max_len) : 1)) {
+		/* Set the new size of the string buffer to be the size needed
+		 * to hold the resulting string (res) plus one byte for the
+		 * terminating '\0'.  If this size is greater than the max, set
+		 * the new length to be the maximum allowed. */
 		if (max_len)
 			(*buf)->len = ((res + 1) < max_len) ? (res + 1) : max_len;
 		else
 			(*buf)->len = res + 1;
+
 		if (!(*buf = ast_realloc(*buf, (*buf)->len + sizeof(*(*buf)))))
 			return AST_DYNSTR_PRINTF_FAILED;
+
 		if (ts)
 			pthread_setspecific(ts->key, *buf);
+
+		/* va_end() and va_start() must be done before calling
+		 * vsnprintf() again. */
 		return AST_DYNSTR_PRINTF_RETRY;
 	}
 



More information about the asterisk-commits mailing list