]> granicus.if.org Git - php/commitdiff
- Fix mem/temp stream exports and readonlyissue
authorMarcus Boerger <helly@php.net>
Sat, 3 Feb 2007 14:45:54 +0000 (14:45 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 3 Feb 2007 14:45:54 +0000 (14:45 +0000)
main/php_memory_streams.h
main/streams/memory.c

index 2df8d9bd1471a130ddf963bacd8be27221ae829a..e4eeaf4de50384c0120dbe6b7cfd0602066d58e0 100644 (file)
@@ -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
index 3dc504cf49f122655862c4ddfeff1fdcb415473c..a21f9329efb4928054f09e2528c5bdd5ee5898ce 100644 (file)
@@ -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 */