+#define SAFE_BUF_ADDCHAR(b, ch) \
+ { \
+ struct safe_buffer *buf = b; \
+ char c = ch; \
+ if (buf && buf->buffer == NULL) \
+ init_buffer(buf); \
+ if (buf && buf->buffer) { \
+ if (buf->buflen == buf->bufsize) \
+ grow_buffer(buf); \
+ *buf->buf_end++ = c; \
+ buf->buflen++; \
+ } \
+ }
+