<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thanks Dan!<div><br></div><div>That worked like a charm!</div><div><br><div><div>On Apr 25, 2012, at 4:13 AM, Dan Fry wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  
    <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hello Jon,<br>
    <br>
    I had a similar problem with a different method (ReadFromUrl) where
    Cocoa was supplying NULL for the outError parameter in some cases,
    and it's not possible to convert null to an "out NSError" parameter
    in C#.<br>
    <br>
    In the end I just didn't use the method from MonoMac and defined my
    own like this:<br>
    <br>
    <pre>[Export("readFromURL:ofType:error:")]
private bool ReadFromUrl2(NSUrl absoluteUrl, string typeName, IntPtr pOutError)
{
    // Set this to an NSError object if an error occurs
    NSError nsError;

    // ...

    // Write the error to the out parameter
    if (pOutError != IntPtr.Zero)
    {
        if (nsError == null)
        {
            Marshal.WriteIntPtr(pOutError, IntPtr.Zero);
        }
        else
        {
            Marshal.WriteIntPtr(pOutError, nsError.Handle);
        }
    }
}
</pre>
    <br>
    Maybe not the best way of solving it, but it worked for me!<br>
    <br>
    Dan<br>
    <br>
    On 25/04/2012 05:03, Jon Lipsky wrote:
    <blockquote cite="mid:9F54E538-9A89-4529-956D-94F875E681B7@elevenworks.com" type="cite">Hi All,
      <div><br>
      </div>
      <div>I'm running into a strange problem that I though perhaps
        someone else might have run into and might have a solution for.</div>
      <div><br>
      </div>
      <div>If I were writing a document based application in Objective-C
        and wanted to the user to be able to cancel the opening of a
        document, I could do something like this (which I can confirm
        works fine):</div>
      <div><br>
      </div>
      <div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; ">- (<span style="color: #bb2d9d">BOOL</span>)readFromData:(<span style="color: #713ea3">NSData</span> *)data ofType:(<span style="color: #713ea3">NSString</span> *)typeName error:(<span style="color: #713ea3">NSError</span> **)outError</div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; ">{</div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; ">    // Loading code here...</div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; "><br>
        </div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; color: rgb(113, 62, 163); "><span style="color:
            #000000">    *outError = [</span>NSError<span style="color:
            #000000"> </span><span style="color: #3e1f7c">errorWithDomain</span><span style="color: #000000">:</span>NSCocoaErrorDomain <span class="Apple-style-span" style=""><span style="color: #3e1f7c">code</span>:<span style="color:
              #3e1f7c">NSUserCancelledError</span> <span style="color:
              #3e1f7c">userInfo</span>:<span style="color: #bb2d9d">nil</span>];</span></div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; color: rgb(187, 45, 157); "><span style="color:
            #000000">    </span>return<span style="color: #000000"> </span>NO<span style="color: #000000">;</span></div>
        <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
          0px; margin-left: 0px; font: normal normal normal 11px/normal
          Menlo; ">}</div>
      </div>
      <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
        0px; margin-left: 0px; font: normal normal normal 11px/normal
        Menlo; "><br>
      </div>
      <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
        0px; margin-left: 0px; font: normal normal normal 11px/normal
        Menlo; ">
        <div style="font-family: Helvetica; font-size: medium; ">The
          (what seems to me) obvious thing to do in MonoMac would be to
          implement this:</div>
        <div style="font-family: Helvetica; font-size: medium; "><br>
        </div>
        <div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; "><span style="color: #1738f5">publi</span>c
            override bool ReadFromData (NSData data, string typeName,
            out NSError outError)</div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; ">{</div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; "><span class="Apple-tab-span" style="white-space:pre"> </span>// Loading code here...</div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; "><br>
          </div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; "><span class="Apple-tab-span" style="white-space:pre"> </span>outError =
            NSError.FromDomain(NSError.CocoaErrorDomain,1376);</div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; "><span class="Apple-tab-span" style="white-space:pre"> </span>return false;</div>
          <div style="font-family: Helvetica; font-size: medium;
            margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
            margin-left: 0px; font: normal normal normal 12px/normal
            Monaco; ">}</div><div style="font-family: Helvetica; font-size: medium; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><br>
          </div><div style="font-family: Helvetica; font-size: medium; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">However,
              when I do so, my app crashes with the following stack
              trace:</span></div><div style="font-family: Helvetica; font-size: medium; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><br>
          </div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#0  0x9287dfd5 in
            __wait4 ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#1  0x93be04ec in
            waitpid$UNIX2003 ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#2  0x0009fe9b in
            mono_handle_native_sigsegv (signal=11, ctx=0xbfffea5c) at
            mini-exceptions.c:2192</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#3  0x00004f6e in
            mono_sigsegv_signal_handler (_dummy=10, info=0xbfffea1c,
            context=0xbfffea5c) at mini.c:5917</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#4  <signal
            handler called></div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#5  0x9249cd44 in
            objc_msgSend ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#6  0x991622cc in
            -[NSDocumentController(NSInternal)
            _fixedFailureReasonFromError:] ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#7  0x9916b5f4 in
            -[NSDocumentController _willPresentOpeningError:forURL:] ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#8  0x9916b197 in
            -[NSDocumentController
            _openDocumentsWithContentsOfURLs:presentErrors:completionHandler:]
            ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">#9  0x9915f749 in
            -[NSDocumentController openDocument:] ()</div>
          <div style="margin-top: 0px; margin-right: 0px; margin-bottom:
            0px; margin-left: 0px; font: normal normal normal
            12px/normal Monaco; min-height: 16px; ">(Rest of stack trace
            omitted)</div>
          <div><br>
          </div>
        </div>
        <div><span class="Apple-style-span" style="font-family:
            Helvetica; font-size: medium; ">Has anyone else run into
            this problem, and if so were you able to find a
            solution/workaround?</span></div>
        <div><span class="Apple-style-span" style="font-family:
            Helvetica; font-size: medium; "><br>
          </span></div>
        <div><span class="Apple-style-span" style="font-family:
            Helvetica; font-size: medium; ">Thanks,</span></div>
        <div><span class="Apple-style-span" style="font-family:
            Helvetica; font-size: medium; ">Jon...</span></div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Mono-osx mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a>
<a class="moz-txt-link-freetext" href="http://lists.ximian.com/mailman/listinfo/mono-osx">http://lists.ximian.com/mailman/listinfo/mono-osx</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div></body></html>