66
77#define CALL_AND_HANDLE (expr ) \
88 try { \
9- expr; \
9+ zval zv = expr; \
10+ RETURN_ZVAL (&zv, 1 , 1 ); \
1011 } catch (const std::invalid_argument &ia) { \
1112 zend_throw_exception (NULL , (" Invalid argument: " + std::string (ia.what ())).c_str (), BENCODE_ERROR_INVALID_ARGUMENT); \
1213 RETURN_NULL (); \
@@ -36,8 +37,7 @@ PHP_METHOD(bitem, parse)
3637 RETURN_NULL ();
3738 }
3839 std::string ben_str (ben, ben_len);
39- zval zv = bitem::parse (ben_str);
40- RETURN_ZVAL (&zv, 1 , 1 );
40+ CALL_AND_HANDLE (bitem::parse (ben_str));
4141}
4242PHP_METHOD (bitem, load)
4343{
@@ -47,8 +47,7 @@ PHP_METHOD(bitem, load)
4747 RETURN_NULL ();
4848 }
4949 std::string file_path_str (file_path, file_path_len);
50- zval zv = bitem::load (file_path_str);
51- RETURN_ZVAL (&zv, 1 , 1 );
50+ CALL_AND_HANDLE (bitem::load (file_path_str));
5251}
5352PHP_METHOD (bitem, save)
5453{
@@ -236,8 +235,7 @@ PHP_METHOD(bdict, parse)
236235 RETURN_NULL ();
237236 std::string tmp (ben, ben_len);
238237 size_t pt = 0 ;
239- zval zv = bdict::parse (tmp, pt);
240- RETURN_ZVAL (&zv, 1 , 1 );
238+ CALL_AND_HANDLE (bdict::parse (tmp, pt));
241239}
242240PHP_METHOD (bdict, encode)
243241{
@@ -255,8 +253,7 @@ PHP_METHOD(bdict, search)
255253 }
256254 std::string tmp (needle, needle_len);
257255 bdict_object *intern = Z_BDICT_OBJ_P (getThis ());
258- zval zv = intern->bnode_data ->search (tmp, mode, " " );
259- RETURN_ZVAL (&zv, 1 , 1 );
256+ CALL_AND_HANDLE (intern->bnode_data ->search (tmp, mode, " " ));
260257}
261258PHP_METHOD (bdict, to_array)
262259{
@@ -462,8 +459,7 @@ PHP_METHOD(blist, parse)
462459 RETURN_NULL ();
463460 std::string tmp (ben, ben_len);
464461 size_t pt = 0 ;
465- zval zv = blist::parse (tmp, pt);
466- RETURN_ZVAL (&zv, 1 , 1 );
462+ CALL_AND_HANDLE (blist::parse (tmp, pt));
467463}
468464PHP_METHOD (blist, encode)
469465{
@@ -481,8 +477,7 @@ PHP_METHOD(blist, search)
481477 }
482478 std::string tmp (needle, needle_len);
483479 blist_object *intern = Z_BLIST_OBJ_P (getThis ());
484- zval zv = intern->bnode_data ->search (tmp, mode, " " );
485- RETURN_ZVAL (&zv, 1 , 1 );
480+ CALL_AND_HANDLE (intern->bnode_data ->search (tmp, mode, " " ));
486481}
487482PHP_METHOD (blist, to_array)
488483{
@@ -588,8 +583,7 @@ PHP_METHOD(bstr, parse)
588583 RETURN_NULL ();
589584 std::string tmp (ben);
590585 size_t pt = 0 ;
591- zval zv = bstr::parse (tmp, pt);
592- RETURN_ZVAL (&zv, 1 , 1 );
586+ CALL_AND_HANDLE (bstr::parse (tmp, pt));
593587}
594588PHP_METHOD (bstr, encode)
595589{
@@ -691,8 +685,7 @@ PHP_METHOD(bint, parse)
691685 RETURN_NULL ();
692686 std::string tmp (ben, ben_len);
693687 size_t pt = 0 ;
694- zval zv = bint::parse (tmp, pt);
695- RETURN_ZVAL (&zv, 1 , 1 );
688+ CALL_AND_HANDLE (bint::parse (tmp, pt));
696689}
697690PHP_METHOD (bint, encode)
698691{
0 commit comments