add_property_string(myobject, "charset", charset, 1);
add_property_string(myobject, "text", decode, 1);
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), (void *)&myobject, sizeof(zval *), NULL);
- fs_give((void**)&decode);
-
+
+ /* only free decode if it was allocated by rfc822_qprint or rfc822_base64 */
+ if (decode != text) {
+ fs_give((void**)&decode);
+ }
+
offset = end_token+2;
for (i = 0; (string[offset + i] == ' ') || (string[offset + i] == 0x0a) || (string[offset + i] == 0x0d); i++);
if ((string[offset + i] == '=') && (string[offset + i + 1] == '?') && (offset + i < end)) {