+ n->string = NULL;
+ }
+
+ if (NULL == string)
+ return;
+
+ /*
+ * One additional byte for the '\n' in multiline mode,
+ * and one for the terminating '\0'.
+ */
+ newch = strlen(string) + (multiline ? 2 : 1);
+ if (NULL == n->string) {
+ n->string = mandoc_malloc(newch);
+ *n->string = '\0';
+ oldch = 0;
+ } else {
+ oldch = strlen(n->string);
+ n->string = mandoc_realloc(n->string, oldch + newch);
+ }
+
+ /* Skip existing content in the destination buffer. */
+ c = n->string + oldch;
+
+ /* Append new content to the destination buffer. */
+ while (*string) {
+ /*
+ * Rudimentary roff copy mode:
+ * Handle escaped backslashes.
+ */
+ if ('\\' == *string && '\\' == *(string + 1))
+ string++;
+ *c++ = *string++;
+ }