--- l2_channel.c Thu Apr 17 07:25:58 2003 +++ ../l2_mod/l2_channel.c Mon Oct 27 09:00:46 2003 @@ -558,6 +558,7 @@ l2_result_t rv; l2_util_format_t vfmt; l2_env_t *env; + char *message; /* argument sanity check */ if (ch == NULL || level == 0 || fmt == NULL) @@ -574,10 +575,12 @@ if (!(ch->levelmask & level)) return L2_OK; + message = (char *) malloc(sizeof(char) * L2_MAX_MSGSIZE); + /* format message */ env = ch->env; - vfmt.curpos = env->message; - vfmt.endpos = env->message + L2_MAX_MSGSIZE; + vfmt.curpos = message; + vfmt.endpos = message + L2_MAX_MSGSIZE; vfmt.data[0].vp = env; vfmt.data[1].i = L2_ERR_FMT; vfmt.flush = l2_channel_vlog_flush; @@ -585,23 +588,25 @@ if ((len = l2_util_format(&vfmt, fmt, ap)) == -1) return (l2_result_t)(vfmt.data[1].i); if (len == 0) - return L2_ERR_FMT; + return L2_ERR_FMT; + /* make sure a trailing newline exists */ - if (env->message[len-1] != '\n') { + if (message[len-1] != '\n') { if (len == L2_MAX_MSGSIZE) return L2_ERR_MEM; - env->message[len++] = '\n'; - env->message[len] = '\0'; + message[len++] = '\n'; + message[len] = '\0'; } /* write message to channel */ rv = L2_OK; - if ((rv = l2_channel_write(ch, level, env->message, len)) != L2_OK) + if ((rv = l2_channel_write(ch, level, message, len)) != L2_OK) return rv; if (ch->flushmask & level) l2_channel_flush(ch); + free(message); return rv; }