Fine with the concept. If you move the additional check (newlen < SMART_STR_START_SIZE) and preallocation into the if (!(d)->c) branch, the changes won't affect the common code path.
> @@ -47,7 +51,11 @@ > if (!(d)->c) (d)->len = (d)->a = 0; > \ > newlen = (d)->len + (n); > \ > if (newlen >= (d)->a) { > \ > + if((d)->a == 0 && newlen < SMART_STR_START_SIZE) { > \ > + (d)->a = SMART_STR_START_SIZE; > \ > + } else { > \ > (d)->a = newlen + SMART_STR_PREALLOC; > \ > + } > \ > (d)->c = SMART_STR_REALLOC((d)->c, (d)->a + 1, (what)); \ > } > \ > } while (0) - Sascha -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php