http://llvm.org/bugs/show_bug.cgi?id=13635

             Bug #: 13635
           Summary: Block (NSError **)error return in ARC crashes due to
                    zombie object
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    Classification: Unclassified


Created attachment 9069
  --> http://llvm.org/bugs/attachment.cgi?id=9069
Sample code

Details:

      -processArray:error: would have been problematic with manual
      retain/release code, since localError is a zombie by the time it
      is assigned to *error. This method actually works fine when ARC is
      enabled, which is great.

      -buggyArcProcessArray:error: fails under ARC though. The value
      assigned to *error is autoreleased, and deallocated, before
      returning to the caller.

      Since we tend to think less about references when building with
      ARC, it would be great if this could be made to just work.

      However, if it cannot, it would be nice if the compiler could
      issue a warning that assigning to *error inside the block is a bad
      idea, and suggest using the __block local to keep a reference to
      the object alive.

   Compiler version:

      % xcrun clang -v
      Apple clang version 4.0 (tags/Apple/clang-421.10.60) (based on LLVM
3.1svn)
      Target: x86_64-apple-darwin12.0.0
      Thread model: posix

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to