summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-06 17:58:39 +0100
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-03-06 17:58:39 +0100
commitfecab9b936f5985da254ca42976eeaf8dbcbea1d (patch)
treea1d2bd5fc59c646f89af9ce9de624a3386afe71d /src
parent2bd3471192b1ebd8f3841368db4b0eaa5643bf55 (diff)
changes to documentation, removed empty exception.cpp implementation, fixed exception handling
Diffstat (limited to 'src')
-rw-r--r--src/exception.cpp18
-rw-r--r--src/origexception.cpp6
-rw-r--r--src/value.cpp6
3 files changed, 6 insertions, 24 deletions
diff --git a/src/exception.cpp b/src/exception.cpp
deleted file mode 100644
index fe62c5b..0000000
--- a/src/exception.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Exception.cpp
- * Implementation of Php Exceptions.
- *
- * @author Jasper van Eck <jasper.vaneck@copernica.com>
- * @copyright 2013 Copernica BV
- */
-
-#include "includes.h"
-
-/**
- * Set up namespace
- */
-namespace Php {
-
-
-
-}
diff --git a/src/origexception.cpp b/src/origexception.cpp
index 4406158..e24131a 100644
--- a/src/origexception.cpp
+++ b/src/origexception.cpp
@@ -23,7 +23,7 @@ OrigException::OrigException(struct _zval_struct *zval) :
_restored(false)
{
// save the exception
- zend_exception_save();
+ //zend_exception_save();
}
/**
@@ -52,7 +52,7 @@ OrigException::~OrigException() noexcept
// skip if the exception was restored
if (_restored) return;
- // clean up the exception
+ // clean up the exception, because it was handled in C++ code
zend_clear_exception();
}
@@ -63,7 +63,7 @@ OrigException::~OrigException() noexcept
void OrigException::restore()
{
// restore the exception
- zend_exception_restore();
+ //zend_exception_restore();
// mark exception as restored
_restored = true;
diff --git a/src/value.cpp b/src/value.cpp
index 0cf1653..53d8c0a 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -1154,12 +1154,12 @@ Value Value::exec(int argc, zval ***params) const
// the current exception
zval *oldException = EG(exception);
-
+
// call the function
if (call_user_function_ex(CG(function_table), NULL, _val, &retval, argc, params, 1, NULL) != SUCCESS) return nullptr;
- // was an exception thrown?
- if (oldException != EG(exception)) throw OrigException(EG(exception));
+ // was an exception thrown? we throw a C++ new exception to give the C++ the chance to catch it
+ if (oldException != EG(exception) && EG(exception)) throw OrigException(EG(exception));
// no (additional) exception was thrown
return retval ? Value(retval) : nullptr;