|
|
@@ -12,7 +12,7 @@
|
|
|
|
|
|
void c11_sbuf__ctor(c11_sbuf* self) {
|
|
|
c11_vector__ctor(&self->data, sizeof(char));
|
|
|
- c11_vector__reserve(&self->data, 100 + sizeof(c11_string));
|
|
|
+ c11_vector__reserve(&self->data, sizeof(c11_string) + 100);
|
|
|
self->data.count = sizeof(c11_string);
|
|
|
}
|
|
|
|
|
|
@@ -23,14 +23,16 @@ void c11_sbuf__write_char(c11_sbuf* self, char c) { c11_vector__push(char, &self
|
|
|
void c11_sbuf__write_int(c11_sbuf* self, int i) {
|
|
|
// len('-2147483648') == 11
|
|
|
c11_vector__reserve(&self->data, self->data.count + 11 + 1);
|
|
|
- int n = snprintf(self->data.data, 11 + 1, "%d", i);
|
|
|
+ char* p = self->data.data + self->data.count;
|
|
|
+ int n = snprintf(p, 11 + 1, "%d", i);
|
|
|
self->data.count += n;
|
|
|
}
|
|
|
|
|
|
void c11_sbuf__write_i64(c11_sbuf* self, int64_t val) {
|
|
|
// len('-9223372036854775808') == 20
|
|
|
c11_vector__reserve(&self->data, self->data.count + 20 + 1);
|
|
|
- int n = snprintf(self->data.data, 20 + 1, "%lld", (long long)val);
|
|
|
+ char* p = self->data.data + self->data.count;
|
|
|
+ int n = snprintf(p, 20 + 1, "%lld", (long long)val);
|
|
|
self->data.count += n;
|
|
|
}
|
|
|
|
|
|
@@ -134,7 +136,7 @@ void c11_sbuf__write_ptr(c11_sbuf* self, void* p) {
|
|
|
c11_string* c11_sbuf__submit(c11_sbuf* self) {
|
|
|
c11_vector__push(char, &self->data, '\0');
|
|
|
c11_array arr = c11_vector__submit(&self->data);
|
|
|
- c11_string* retval = (c11_string*)arr.data;
|
|
|
+ c11_string* retval = arr.data;
|
|
|
retval->size = arr.count - sizeof(c11_string) - 1;
|
|
|
return retval;
|
|
|
}
|