diff options
Diffstat (limited to 'lib/Core/SpecialFunctionHandler.cpp')
-rw-r--r-- | lib/Core/SpecialFunctionHandler.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/Core/SpecialFunctionHandler.cpp b/lib/Core/SpecialFunctionHandler.cpp index ab2f07b1..e2ff9cb2 100644 --- a/lib/Core/SpecialFunctionHandler.cpp +++ b/lib/Core/SpecialFunctionHandler.cpp @@ -715,18 +715,17 @@ void SpecialFunctionHandler::handleRealloc(ExecutionState &state, ref<Expr> address = arguments[0]; ref<Expr> size = arguments[1]; - Executor::StatePair zeroSize = executor.fork(state, - Expr::createIsZero(size), - true); - + Executor::StatePair zeroSize = + executor.fork(state, Expr::createIsZero(size), true, BranchType::Realloc); + if (zeroSize.first) { // size == 0 executor.executeFree(*zeroSize.first, address, target); } if (zeroSize.second) { // size != 0 - Executor::StatePair zeroPointer = executor.fork(*zeroSize.second, - Expr::createIsZero(address), - true); - + Executor::StatePair zeroPointer = + executor.fork(*zeroSize.second, Expr::createIsZero(address), true, + BranchType::Realloc); + if (zeroPointer.first) { // address == 0 executor.executeAlloc(*zeroPointer.first, size, false, target); } |