summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Yang <TeBoring@users.noreply.github.com>2018-03-07 19:37:18 -0800
committerGitHub <noreply@github.com>2018-03-07 19:37:18 -0800
commit298c25269555cd8d558ec40b36eadf414d7fd255 (patch)
treefc5cdb7c23647186b42bd5a087afd0ae11e32413
parent0693640da8f895b0c24541abf177e9e915739447 (diff)
parente06cc3d7ccae264adc245fa422df0c28277f27b4 (diff)
Merge pull request #103 from TeBoring/php-change
Fix problems of upb_encode_growbuffer
-rw-r--r--upb/encode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/upb/encode.c b/upb/encode.c
index abcf17c..a017c46 100644
--- a/upb/encode.c
+++ b/upb/encode.c
@@ -66,7 +66,7 @@ static bool upb_encode_growbuffer(upb_encstate *e, size_t bytes) {
CHK(new_buf);
/* We want previous data at the end, realloc() put it at the beginning. */
- memmove(e->limit - old_size, e->buf, old_size);
+ memmove(new_buf + new_size - old_size, e->buf, old_size);
e->ptr = new_buf + new_size - (e->limit - e->ptr);
e->limit = new_buf + new_size;
@@ -347,7 +347,7 @@ bool upb_encode_message(upb_encstate* e, const char *msg,
const upb_msglayout_msginit_v1 *m,
size_t *size) {
int i;
- char *buf_end = e->ptr;
+ size_t pre_len = e->limit - e->ptr;
if (msg == NULL) {
return true;
@@ -371,7 +371,7 @@ bool upb_encode_message(upb_encstate* e, const char *msg,
}
}
- *size = buf_end - e->ptr;
+ *size = (e->limit - e->ptr) - pre_len;
return true;
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback