diff options
-rw-r--r-- | CHANGELOG-3.6.md | 16 | ||||
-rw-r--r-- | cpp/src/Slice/ObjCUtil.cpp | 2 | ||||
-rw-r--r-- | cpp/src/slice2objc/Gen.cpp | 4 |
3 files changed, 17 insertions, 5 deletions
diff --git a/CHANGELOG-3.6.md b/CHANGELOG-3.6.md index 5414d9bbf95..d5caa622d60 100644 --- a/CHANGELOG-3.6.md +++ b/CHANGELOG-3.6.md @@ -8,6 +8,8 @@ We recommend that you use the release notes as a guide for migrating your applications to this release, and the manual for complete details on a particular aspect of Ice. +- [Changes in Ice 3.6.4 Hotfix for Xcode 9](#changes-in-ice-364-hotfix-for-xcode-9) + - [Objective-C Changes](#objective-c-changes) - [Changes in Ice 3.6.4](#changes-in-ice-364) - [General Changes](#general-changes) - [C++ Changes](#c-changes) @@ -17,7 +19,7 @@ particular aspect of Ice. - [Changes in Ice 3.6.3](#changes-in-ice-363) - [General Changes](#general-changes) - [C++ Changes](#c-changes) - - [Objective-C Changes](#objective-c-changes) + - [Objective-C Changes](#objective-c-changes-1) - [PHP Changes](#php-changes) - [Python Changes](#python-changes) - [Changes in Ice 3.6.2](#changes-in-ice-362) @@ -38,11 +40,21 @@ particular aspect of Ice. - [C# Changes](#c-changes-5) - [Java Changes](#java-changes-1) - [JavaScript Changes](#javascript-changes-1) - - [Objective-C Changes](#objective-c-changes-1) + - [Objective-C Changes](#objective-c-changes-2) - [PHP Changes](#php-changes-2) - [Python Changes](#python-changes-2) - [Ruby Changes](#ruby-changes-1) +# Changes in Ice 3.6.4 Hotfix for Xcode 9 + +These are the changes since Ice 3.6.4 included in this release. + +## Objective-C Changes + +- Fixed the generated code to specify the __autoreleasing qualifier on + parameters returned by reference. Xcode 9.0 now emits a warning if this + qualifier is omitted. + # Changes in Ice 3.6.4 These are the changes since Ice 3.6.3. diff --git a/cpp/src/Slice/ObjCUtil.cpp b/cpp/src/Slice/ObjCUtil.cpp index e9001855f06..ab8dca7aa73 100644 --- a/cpp/src/Slice/ObjCUtil.cpp +++ b/cpp/src/Slice/ObjCUtil.cpp @@ -388,7 +388,7 @@ Slice::ObjCGenerator::outTypeToString(const TypePtr& type, bool optional, bool a s += "*"; } } - if(autoreleasing && !isValueType(type)) + if(autoreleasing && (!isValueType(type) || optional)) { s += " ICE_AUTORELEASING_QUALIFIER"; } diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp index 80135073987..443f4598c05 100644 --- a/cpp/src/slice2objc/Gen.cpp +++ b/cpp/src/slice2objc/Gen.cpp @@ -436,7 +436,7 @@ Slice::ObjCVisitor::getParams(const OperationPtr& op) const string typeString; if((*q)->isOutParam()) { - typeString = outTypeToString(type, (*q)->optional(), false, true); + typeString = outTypeToString(type, (*q)->optional(), true, true); } else { @@ -485,7 +485,7 @@ Slice::ObjCVisitor::getUnmarshalParams(const OperationPtr& op) const { result += " " + getParamId(*q); } - result += ":(" + outTypeToString(type, (*q)->optional(), false, true) + ")" + fixId((*q)->name()); + result += ":(" + outTypeToString(type, (*q)->optional(), true, true) + ")" + fixId((*q)->name()); } } return result; |