Author: geechorama
Date: Tue Jul 21 20:14:31 2009
New Revision: 796518
URL: http://svn.apache.org/viewvc?rev=796518&view=rev
Log:
THRIFT-59. Make sure we don't over-release strings after we deserialize them.
Modified:
incubator/thrift/trunk/compiler/cpp/src/generate/t_cocoa_generator.cc
Modified: incubator/thrift/trunk/compiler/cpp/src/generate/t_cocoa_generator.cc
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/compiler/cpp/src/generate/t_cocoa_generator.cc?rev=796518&r1=796517&r2=796518&view=diff
==============================================================================
--- incubator/thrift/trunk/compiler/cpp/src/generate/t_cocoa_generator.cc
(original)
+++ incubator/thrift/trunk/compiler/cpp/src/generate/t_cocoa_generator.cc Tue
Jul 21 20:14:31 2009
@@ -1486,11 +1486,15 @@
" forKey: " << containerize(keyType, key) << "];" << endl;
if (type_can_be_null(keyType)) {
- indent(out) << "[" << containerize(keyType, key) << " release];" << endl;
+ if (!(get_true_type(keyType)->is_string())) {
+ indent(out) << "[" << containerize(keyType, key) << " release];" << endl;
+ }
}
if (type_can_be_null(valType)) {
- indent(out) << "[" << containerize(valType, val) << " release];" << endl;
+ if (!(get_true_type(valType)->is_string())) {
+ indent(out) << "[" << containerize(valType, val) << " release];" << endl;
+ }
}
}
@@ -1510,7 +1514,10 @@
"[" << fieldName << " addObject: " << containerize(type, elem) << "];" <<
endl;
if (type_can_be_null(type)) {
- indent(out) << "[" << containerize(type, elem) << " release];" << endl;
+ // deserialized strings are autorelease, so don't release them
+ if (!(get_true_type(type)->is_string())) {
+ indent(out) << "[" << containerize(type, elem) << " release];" << endl;
+ }
}
}
@@ -1530,7 +1537,9 @@
"[" << fieldName << " addObject: " << containerize(type, elem) << "];" <<
endl;
if (type_can_be_null(type)) {
- indent(out) << "[" << containerize(type, elem) << " release];" << endl;
+ if (!(get_true_type(type)->is_string())) {
+ indent(out) << "[" << containerize(type, elem) << " release];" << endl;
+ }
}
}