diff --git a/objectivec/GPBMessage.m b/objectivec/GPBMessage.m
index a06bb6f..1c1c8f8 100644
--- a/objectivec/GPBMessage.m
+++ b/objectivec/GPBMessage.m
@@ -1994,19 +1994,6 @@
   [input release];
 }
 
-#pragma mark - mergeDelimitedFrom
-
-- (void)mergeDelimitedFromCodedInputStream:(GPBCodedInputStream *)input
-                         extensionRegistry:(id<GPBExtensionRegistry>)extensionRegistry {
-  GPBCodedInputStreamState *state = &input->state_;
-  if (GPBCodedInputStreamIsAtEnd(state)) {
-    return;
-  }
-  NSData *data = GPBCodedInputStreamReadRetainedBytesNoCopy(state);
-  [self mergeFromData:data extensionRegistry:extensionRegistry];
-  [data release];
-}
-
 #pragma mark - Parse From Data Support
 
 + (instancetype)parseFromData:(NSData *)data error:(NSError **)errorPtr {
@@ -2033,27 +2020,26 @@
 + (instancetype)parseDelimitedFromCodedInputStream:(GPBCodedInputStream *)input
                                  extensionRegistry:(id<GPBExtensionRegistry>)extensionRegistry
                                              error:(NSError **)errorPtr {
-  GPBMessage *message = [[[self alloc] init] autorelease];
+  GPBMessage *result = nil;
   @try {
-    [message mergeDelimitedFromCodedInputStream:input extensionRegistry:extensionRegistry];
-    if (errorPtr) {
-      *errorPtr = nil;
+    uint64_t size = GPBCodedInputStreamReadUInt64(&input->state_);
+    size_t oldLimit = [input pushLimit:size];
+    result = [self parseFromCodedInputStream:input
+                           extensionRegistry:extensionRegistry
+                                       error:errorPtr];
+    if (result) {
+      [input popLimit:oldLimit];
+      if (errorPtr) {
+        *errorPtr = nil;
+      }
     }
   } @catch (NSException *exception) {
-    message = nil;
+    result = nil;
     if (errorPtr) {
       *errorPtr = ErrorFromException(exception);
     }
   }
-#ifdef DEBUG
-  if (message && !message.initialized) {
-    message = nil;
-    if (errorPtr) {
-      *errorPtr = MessageError(GPBMessageErrorCodeMissingRequiredField, nil);
-    }
-  }
-#endif
-  return message;
+  return result;
 }
 
 #pragma mark - Unknown Field Support
diff --git a/objectivec/GPBMessage_PackagePrivate.h b/objectivec/GPBMessage_PackagePrivate.h
index 70b47a5..1b3a993 100644
--- a/objectivec/GPBMessage_PackagePrivate.h
+++ b/objectivec/GPBMessage_PackagePrivate.h
@@ -80,11 +80,6 @@
 - (void)mergeFromCodedInputStream:(GPBCodedInputStream *)input
                 extensionRegistry:(id<GPBExtensionRegistry>)extensionRegistry;
 
-// Parses the next delimited message of this type from the input and merges it
-// with this message.
-- (void)mergeDelimitedFromCodedInputStream:(GPBCodedInputStream *)input
-                         extensionRegistry:(id<GPBExtensionRegistry>)extensionRegistry;
-
 - (void)addUnknownMapEntry:(int32_t)fieldNum value:(NSData *)data;
 
 @end
diff --git a/objectivec/Tests/GPBMessageTests+Serialization.m b/objectivec/Tests/GPBMessageTests+Serialization.m
index 5a7dc16..68b62ef 100644
--- a/objectivec/Tests/GPBMessageTests+Serialization.m
+++ b/objectivec/Tests/GPBMessageTests+Serialization.m
@@ -1276,7 +1276,7 @@
   XCTAssertNil(result);
   XCTAssertNotNil(error);
   XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain);
-  XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidSize);
+  XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidSubsectionLimit);
 }
 
 #ifdef DEBUG
