Skip to content

Commit 7b7e01f

Browse files
author
Alexey Gadzhiev
committed
Fix for broken upsert/update
1 parent 2c8ed54 commit 7b7e01f

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/tarantool.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,7 @@ PHP_METHOD(Tarantool, update) {
15131513
SSTR_LEN(obj->value) = before_len;
15141514
RETURN_FALSE;
15151515
}
1516-
php_tp_reencode_length(obj->value, sz);
1516+
php_tp_reencode_length(obj->value, before_len);
15171517
if (tarantool_stream_send(obj) == FAILURE)
15181518
RETURN_FALSE;
15191519

@@ -1543,7 +1543,7 @@ PHP_METHOD(Tarantool, upsert) {
15431543
SSTR_LEN(obj->value) = before_len;
15441544
RETURN_FALSE;
15451545
}
1546-
php_tp_reencode_length(obj->value, sz);
1546+
php_tp_reencode_length(obj->value, before_len);
15471547
if (tarantool_stream_send(obj) == FAILURE)
15481548
RETURN_FALSE;
15491549

src/tarantool_proto.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,10 @@ void php_tp_encode_usplice(smart_string *str, uint32_t fieldno,
268268
php_mp_pack_string(str, buffer, buffer_len);
269269
}
270270

271-
void php_tp_reencode_length(smart_string *str, char *sz) {
272-
ssize_t package_size = (SSTR_POS(str) - sz) - 5;
271+
void php_tp_reencode_length(smart_string *str, size_t orig_len) {
272+
ssize_t package_size = (SSTR_LEN(str) - orig_len) - 5;
273273
assert(package_size > 0);
274+
char *sz = SSTR_BEG(str) + orig_len;
274275
php_mp_pack_package_size_basic(sz, package_size);
275276
}
276277

src/tarantool_proto.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ void php_tp_encode_uother(smart_string *str, char type, uint32_t fieldno,
150150
void php_tp_encode_usplice(smart_string *str, uint32_t fieldno,
151151
uint32_t position, uint32_t offset,
152152
const char *buffer, size_t buffer_len);
153-
void php_tp_reencode_length(smart_string *str, char *sz);
153+
void php_tp_reencode_length(smart_string *str, size_t orig_len);
154154

155155
int convert_iter_str(const char *i, size_t i_len);
156156

0 commit comments

Comments
 (0)