summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-09-15 16:48:29 +0200
committerAnatol Belski <ab@php.net>2016-10-05 22:53:21 +0200
commit0ca15cbeba8b8289ee6171bd30850fe06880dc2c (patch)
treea9d36287e154c09858690d31b2fa3b5288d622b1
parent4b41973ba12947d569c436db2162d0be7c25e365 (diff)
downloadphp-git-0ca15cbeba8b8289ee6171bd30850fe06880dc2c.tar.gz
reduce size of stream struct
32 bytes are spared on 64-bit build
-rw-r--r--ext/standard/php_string.h4
-rw-r--r--ext/standard/string.c6
-rw-r--r--main/php_streams.h24
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 */