Skip to content

Commit 7c55fb1

Browse files
committed
bring back error handling
1 parent 3db9519 commit 7c55fb1

1 file changed

Lines changed: 10 additions & 17 deletions

File tree

src/bencode.cc

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
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
}
4242
PHP_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
}
5352
PHP_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
}
242240
PHP_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
}
261258
PHP_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
}
468464
PHP_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
}
487482
PHP_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
}
594588
PHP_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
}
697690
PHP_METHOD(bint, encode)
698691
{

0 commit comments

Comments
 (0)