diff options
-rw-r--r-- | ext/standard/php_string.h | 4 | ||||
-rw-r--r-- | ext/standard/string.c | 6 | ||||
-rw-r--r-- | main/php_streams.h | 24 |
3 files changed, 19 insertions, 15 deletions
diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index 51cf8c9962..14b66e7e13 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -133,8 +133,8 @@ PHPAPI char *php_stristr(char *s, char *t, size_t s_len, size_t t_len); PHPAPI zend_string *php_str_to_str(char *haystack, size_t length, char *needle, size_t needle_len, char *str, size_t str_len); PHPAPI zend_string *php_trim(zend_string *str, char *what, size_t what_len, int mode); -PHPAPI size_t php_strip_tags(char *rbuf, size_t len, int *state, const char *allow, size_t allow_len); -PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const char *allow, size_t allow_len, zend_bool allow_tag_spaces); +PHPAPI size_t php_strip_tags(char *rbuf, size_t len, uint8_t *state, const char *allow, size_t allow_len); +PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, uint8_t *stateptr, const char *allow, size_t allow_len, zend_bool allow_tag_spaces); PHPAPI void php_implode(const zend_string *delim, zval *arr, zval *return_value); PHPAPI void php_explode(const zend_string *delim, zend_string *str, zval *return_value, zend_long limit); diff --git a/ext/standard/string.c b/ext/standard/string.c index c41d48ef17..fa59ddd06f 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -4599,7 +4599,7 @@ int php_tag_find(char *tag, size_t len, const char *set) { } /* }}} */ -PHPAPI size_t php_strip_tags(char *rbuf, size_t len, int *stateptr, const char *allow, size_t allow_len) /* {{{ */ +PHPAPI size_t php_strip_tags(char *rbuf, size_t len, uint8_t *stateptr, const char *allow, size_t allow_len) /* {{{ */ { return php_strip_tags_ex(rbuf, len, stateptr, allow, allow_len, 0); } @@ -4625,11 +4625,11 @@ PHPAPI size_t php_strip_tags(char *rbuf, size_t len, int *stateptr, const char * swm: Added ability to strip <?xml tags without assuming it PHP code. */ -PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const char *allow, size_t allow_len, zend_bool allow_tag_spaces) +PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, uint8_t *stateptr, const char *allow, size_t allow_len, zend_bool allow_tag_spaces) { char *tbuf, *buf, *p, *tp, *rp, c, lc; int br, depth=0, in_q = 0; - int state = 0; + uint8_t state = 0; size_t pos, i = 0; char *allow_free = NULL; const char *allow_actual; diff --git a/main/php_streams.h b/main/php_streams.h index e205118bd7..1bdee95d17 100644 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -197,22 +197,26 @@ struct _php_stream { void *wrapperthis; /* convenience pointer for a instance of a wrapper */ zval wrapperdata; /* fgetwrapperdata retrieves this */ - int fgetss_state; /* for fgetss to handle multiline tags */ - int is_persistent; - char mode[16]; /* "rwb" etc. ala stdio */ - zend_resource *res; /* used for auto-cleanup */ - int in_free; /* to prevent recursion during free */ + uint8_t is_persistent:1; + uint8_t in_free:1; /* to prevent recursion during free */ + uint8_t eof:1; + uint8_t __exposed:1; /* non-zero if exposed as a zval somewhere */ + /* so we know how to clean it up correctly. This should be set to * PHP_STREAM_FCLOSE_XXX as appropriate */ - int fclose_stdiocast; + uint8_t fclose_stdiocast:2; + + uint8_t fgetss_state; /* for fgetss to handle multiline tags */ + + char mode[16]; /* "rwb" etc. ala stdio */ + + uint32_t flags; /* PHP_STREAM_FLAG_XXX */ + + zend_resource *res; /* used for auto-cleanup */ FILE *stdiocast; /* cache this, otherwise we might leak! */ - int __exposed; /* non-zero if exposed as a zval somewhere */ char *orig_path; zend_resource *ctx; - uint32_t flags; /* PHP_STREAM_FLAG_XXX */ - - int eof; /* buffer */ zend_off_t position; /* of underlying stream */ |