From: Marcus Boerger Date: Sat, 3 Feb 2007 14:45:54 +0000 (+0000) Subject: - Fix mem/temp stream exports and readonlyissue X-Git-Tag: RELEASE_1_0_0RC1~30 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67206a2cbf1e81a56a2c8059b48d16869f973601;p=php - Fix mem/temp stream exports and readonlyissue --- diff --git a/main/php_memory_streams.h b/main/php_memory_streams.h index 2df8d9bd14..e4eeaf4de5 100644 --- a/main/php_memory_streams.h +++ b/main/php_memory_streams.h @@ -48,10 +48,10 @@ PHPAPI php_stream *_php_stream_temp_create(int mode, size_t max_memory_usage STR PHPAPI php_stream *_php_stream_temp_open(int mode, size_t max_memory_usage, char *buf, size_t length STREAMS_DC TSRMLS_DC); END_EXTERN_C() -extern php_stream_ops php_stream_memory_ops; -extern php_stream_ops php_stream_temp_ops; -extern php_stream_ops php_stream_rfc2397_ops; -extern php_stream_wrapper php_stream_rfc2397_wrapper; +extern PHPAPI php_stream_ops php_stream_memory_ops; +extern PHPAPI php_stream_ops php_stream_temp_ops; +extern PHPAPI php_stream_ops php_stream_rfc2397_ops; +extern PHPAPI php_stream_wrapper php_stream_rfc2397_wrapper; #define PHP_STREAM_IS_MEMORY &php_stream_memory_ops #define PHP_STREAM_IS_TEMP &php_stream_temp_ops diff --git a/main/streams/memory.c b/main/streams/memory.c index 3dc504cf49..a21f9329ef 100644 --- a/main/streams/memory.c +++ b/main/streams/memory.c @@ -253,6 +253,9 @@ static int php_stream_memory_set_option(php_stream *stream, int option, int valu return PHP_STREAM_OPTION_RETURN_OK; case PHP_STREAM_TRUNCATE_SET_SIZE: + if (ms->mode & TEMP_STREAM_READONLY) { + return PHP_STREAM_OPTION_RETURN_ERR; + } newsize = *(size_t*)ptrparam; if (newsize <= ms->fsize) { if (newsize < ms->fpos) { @@ -272,7 +275,7 @@ static int php_stream_memory_set_option(php_stream *stream, int option, int valu } /* }}} */ -php_stream_ops php_stream_memory_ops = { +PHPAPI php_stream_ops php_stream_memory_ops = { php_stream_memory_write, php_stream_memory_read, php_stream_memory_close, php_stream_memory_flush, "MEMORY", @@ -532,7 +535,7 @@ static int php_stream_temp_set_option(php_stream *stream, int option, int value, } /* }}} */ -php_stream_ops php_stream_temp_ops = { +PHPAPI php_stream_ops php_stream_temp_ops = { php_stream_temp_write, php_stream_temp_read, php_stream_temp_close, php_stream_temp_flush, "TEMP", @@ -585,7 +588,7 @@ PHPAPI php_stream *_php_stream_temp_open(int mode, size_t max_memory_usage, char } /* }}} */ -php_stream_ops php_stream_rfc2397_ops = { +PHPAPI php_stream_ops php_stream_rfc2397_ops = { php_stream_temp_write, php_stream_temp_read, php_stream_temp_close, php_stream_temp_flush, "RFC2397", @@ -726,7 +729,7 @@ static php_stream * php_stream_url_wrap_rfc2397(php_stream_wrapper *wrapper, cha return stream; } -static php_stream_wrapper_ops php_stream_rfc2397_wops = { +PHPAPI php_stream_wrapper_ops php_stream_rfc2397_wops = { php_stream_url_wrap_rfc2397, NULL, /* close */ NULL, /* fstat */ @@ -739,7 +742,7 @@ static php_stream_wrapper_ops php_stream_rfc2397_wops = { NULL /* rmdir */ }; -php_stream_wrapper php_stream_rfc2397_wrapper = { +PHPAPI php_stream_wrapper php_stream_rfc2397_wrapper = { &php_stream_rfc2397_wops, NULL, 1, /* is_url */