pollita Fri Mar 24 00:19:39 2006 UTC
Modified files:
/php-src/main/streams streams.c
Log:
Add some error checking when stream converters are instantiated.
Use the global conversion error handlers for output conversion (for now)
We may want to make this customizable on a per-stream basis
via context param later on...
http://cvs.php.net/viewcvs.cgi/php-src/main/streams/streams.c?r1=1.108&r2=1.109&diff_format=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.108
php-src/main/streams/streams.c:1.109
--- php-src/main/streams/streams.c:1.108 Tue Mar 21 18:28:42 2006
+++ php-src/main/streams/streams.c Fri Mar 24 00:19:39 2006
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.108 2006/03/21 18:28:42 pollita Exp $ */
+/* $Id: streams.c,v 1.109 2006/03/24 00:19:39 pollita Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -2205,11 +2205,45 @@
UErrorCode status = U_ZERO_ERROR;
stream->output_encoding = ucnv_open(encoding, &status);
+ switch (U_FAILURE(status)) {
+ case U_ZERO_ERROR:
+ /* UTODO: (Maybe?) Allow overriding the
default error handlers on a per-stream basis via context params */
+
zend_set_converter_error_mode(stream->output_encoding, UG(from_u_error_mode));
+
zend_set_converter_subst_char(stream->output_encoding, UG(subst_char),
UG(subst_char_len));
+ break;
+ case U_MEMORY_ALLOCATION_ERROR:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Unable to allocate memory for
unicode output converter: %s", encoding);
+ break;
+ case U_FILE_ACCESS_ERROR:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Error loading unicode output
converter: %s", encoding);
+ break;
+ default:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Unknown error starting unicode
output converter: %s", encoding);
+ }
}
if (strchr(implicit_mode, 'r') || strchr(implicit_mode, '+')) {
char *encoding = (context && context->input_encoding) ?
context->input_encoding : "utf8";
UErrorCode status = U_ZERO_ERROR;
stream->input_encoding = ucnv_open(encoding, &status);
+ switch (U_FAILURE(status)) {
+ case U_ZERO_ERROR:
+ /* UTODO: If/When Input error handling
gets implemented, set the options here */
+ break;
+ case U_MEMORY_ALLOCATION_ERROR:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Unable to allocate memory for
unicode input converter: %s", encoding);
+ break;
+ case U_FILE_ACCESS_ERROR:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Error loading unicode input
converter: %s", encoding);
+ break;
+ default:
+ php_stream_wrapper_log_error(wrapper,
options ^ REPORT_ERRORS TSRMLS_CC,
+ "Unknown error starting unicode
input converter: %s", encoding);
+ }
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php