Skip to content

Commit 943d272

Browse files
authored
Merge pull request #117 from yatsukhnenko/master
Add return value to php_msgpack_unserialize.
2 parents e616221 + b8ec2fd commit 943d272

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

msgpack.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -203,14 +203,15 @@ PHP_MSGPACK_API void php_msgpack_serialize(smart_str *buf, zval *val) /* {{{ */
203203
}
204204
/* }}} */
205205

206-
PHP_MSGPACK_API void php_msgpack_unserialize(zval *return_value, char *str, size_t str_len) /* {{{ */ {
206+
PHP_MSGPACK_API int php_msgpack_unserialize(zval *return_value, char *str, size_t str_len) /* {{{ */ {
207207
int ret;
208208
size_t off = 0;
209209
msgpack_unpack_t mp;
210210
msgpack_unserialize_data_t var_hash;
211211

212212
if (str_len <= 0) {
213-
RETURN_NULL();
213+
RETVAL_NULL();
214+
return FAILURE;
214215
}
215216

216217
template_init(&mp);
@@ -224,28 +225,25 @@ PHP_MSGPACK_API void php_msgpack_unserialize(zval *return_value, char *str, size
224225

225226
switch (ret) {
226227
case MSGPACK_UNPACK_PARSE_ERROR:
227-
zval_dtor(return_value);
228-
msgpack_unserialize_var_destroy(&var_hash, 1);
229228
MSGPACK_WARNING("[msgpack] (%s) Parse error", __FUNCTION__);
230-
RETURN_FALSE;
229+
break;
231230
case MSGPACK_UNPACK_CONTINUE:
232-
zval_dtor(return_value);
233-
msgpack_unserialize_var_destroy(&var_hash, 1);
234231
MSGPACK_WARNING("[msgpack] (%s) Insufficient data for unserializing", __FUNCTION__);
235-
RETURN_FALSE;
232+
break;
236233
case MSGPACK_UNPACK_EXTRA_BYTES:
237234
case MSGPACK_UNPACK_SUCCESS:
238235
msgpack_unserialize_var_destroy(&var_hash, 0);
239236
if (off < str_len) {
240237
MSGPACK_WARNING("[msgpack] (%s) Extra bytes", __FUNCTION__);
241238
}
242-
break;
239+
return SUCCESS;
243240
default:
244-
zval_dtor(return_value);
245-
msgpack_unserialize_var_destroy(&var_hash, 1);
246241
MSGPACK_WARNING("[msgpack] (%s) Unknown result", __FUNCTION__);
247-
RETURN_FALSE;
248242
}
243+
zval_dtor(return_value);
244+
msgpack_unserialize_var_destroy(&var_hash, 1);
245+
RETVAL_FALSE;
246+
return FAILURE;
249247
}
250248
/* }}} */
251249

php_msgpack.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ ZEND_EXTERN_MODULE_GLOBALS(msgpack)
4141

4242
PHP_MSGPACK_API void php_msgpack_serialize(
4343
smart_str *buf, zval *val);
44-
PHP_MSGPACK_API void php_msgpack_unserialize(
44+
PHP_MSGPACK_API int php_msgpack_unserialize(
4545
zval *return_value, char *str, size_t str_len);
4646

4747
#endif /* PHP_MSGPACK_H */

0 commit comments

Comments
 (0)