- old_len = ri->chardata_len;
- new_len = old_len + len;
- new_buffer = realloc(ri->chardata, new_len + 1);
- if (new_buffer != NULL) {
- memcpy(&new_buffer[old_len], s, len);
- new_buffer[new_len] = 0;
- ri->chardata = new_buffer;
- ri->chardata_len = new_len;
+ if (ri->CData != NULL) {
+ StrBufAppendBufPlain (ri->CData, s, len, 0);
+ } else {
+ old_len = ri->chardata_len;
+ new_len = old_len + len;
+ new_buffer = realloc(ri->chardata, new_len + 1);
+ if (new_buffer != NULL) {
+ memcpy(&new_buffer[old_len], s, len);
+ new_buffer[new_len] = 0;
+ ri->chardata = new_buffer;
+ ri->chardata_len = new_len;
+ }