(pmmaga)
. Fixed bug #75677 (Clang ignores fastcall calling convention on variadic
function). (Li-Wen Hsu)
+ . Fixed bug #54043 (Remove inconsitency of internal exceptions and user
+ defined exceptions). (Nikita)
- BCMath:
. Fixed bug #66364 (BCMath bcmul ignores scale parameter). (cmb)
- . Implemented request #67855 (No way to get current scale in use). (Chris
- Wright, cmb)
+ . Implemented request #67855 (No way to get current scale in use). (Chris
+ Wright, cmb)
. Fixed bug #75164 (split_bc_num() is pointless). (cmb)
. Fixed bug #75169 (BCMath errors/warnings bypass PHP's error handling). (cmb)
some old options removed. This is now written in PHP and has no external
dependencies.
. Support for BeOS has been dropped.
+ . Exceptions thrown due to automatic conversion of warnings into exceptions
+ in EH_THROW mode (e.g. some DateTime exceptions) no longer populate
+ error_get_last() state. As such, they now work the same way as manually
+ thrown exceptions.
BCMath:
. All warnings thrown by BCMath functions are now using PHP's error handling.
--- /dev/null
+--TEST--
+Bug #54043: Remove inconsitency of internal exceptions and user defined exceptions
+--FILE--
+<?php
+
+$time = '9999-11-33'; // obviously invalid ;-)
+$timeZone = new DateTimeZone('UTC');
+
+try {
+ $dateTime = new DateTime($time, $timeZone);
+} catch (Exception $e) {
+ var_dump($e->getMessage());
+}
+
+var_dump(error_get_last());
+
+?>
+--EXPECT--
+string(105) "DateTime::__construct(): Failed to parse time string (9999-11-33) at position 9 (3): Unexpected character"
+NULL
display = 1;
}
- /* store the error if it has changed */
- if (display) {
- if (PG(last_error_message)) {
- char *s = PG(last_error_message);
- PG(last_error_message) = NULL;
- free(s);
- }
- if (PG(last_error_file)) {
- char *s = PG(last_error_file);
- PG(last_error_file) = NULL;
- free(s);
- }
- if (!error_filename) {
- error_filename = "Unknown";
- }
- PG(last_error_type) = type;
- PG(last_error_message) = strdup(buffer);
- PG(last_error_file) = strdup(error_filename);
- PG(last_error_lineno) = error_lineno;
- }
-
/* according to error handling mode, throw exception or show it */
if (EG(error_handling) == EH_THROW) {
switch (type) {
}
}
+ /* store the error if it has changed */
+ if (display) {
+ if (PG(last_error_message)) {
+ char *s = PG(last_error_message);
+ PG(last_error_message) = NULL;
+ free(s);
+ }
+ if (PG(last_error_file)) {
+ char *s = PG(last_error_file);
+ PG(last_error_file) = NULL;
+ free(s);
+ }
+ if (!error_filename) {
+ error_filename = "Unknown";
+ }
+ PG(last_error_type) = type;
+ PG(last_error_message) = strdup(buffer);
+ PG(last_error_file) = strdup(error_filename);
+ PG(last_error_lineno) = error_lineno;
+ }
+
/* display/log the error if necessary */
if (display && (EG(error_reporting) & type || (type & E_CORE))
&& (PG(log_errors) || PG(display_errors) || (!module_initialized))) {