dgaudet 98/09/22 08:43:43
Modified: src/main http_log.c Log: ap_table_set() causes an ap_pstrdup() of both arguments, one of the arguments is a constant and it's a waste to pstrdup it. Furthermore using a static local buffer means there is a static limit to the message length. Also, ap_pvsprintf() can get away with zero-copies of the output in most cases, whereas ap_pstrdup() always copies the output at least once. Unlike Ken's claim there's no "gyration" required by ap_pv?sprintf() to figure out the string length. Clean this all up. Revision Changes Path 1.69 +2 -4 apache-1.3/src/main/http_log.c Index: http_log.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/http_log.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- http_log.c 1998/09/21 17:29:45 1.68 +++ http_log.c 1998/09/22 15:43:42 1.69 @@ -441,10 +441,8 @@ va_start(args, fmt); log_error_core(file, line, level, r->server, r, fmt, args); if (ap_table_get(r->notes, "error-notes") == NULL) { - char errstr[MAX_STRING_LEN]; - - ap_vsnprintf(errstr, sizeof(errstr), fmt, args); - ap_table_set(r->notes, "error-notes", errstr); + ap_table_setn(r->notes, "error-notes", + ap_pvsprintf(r->pool, fmt, args)); } va_end(args); }