From 23f2878808d10a63bdf0bf3673f6ddaa9c6bf3b0 Mon Sep 17 00:00:00 2001 From: mattpodwysocki Date: Wed, 5 Oct 2016 02:33:57 -0700 Subject: [PATCH] rocket: fix P/Invoke sig for bool Summary: Fixes the `bool` marshaling issue as describe on [MSDN](https://blogs.msdn.microsoft.com/jaredpar/2008/10/14/pinvoke-and-bool-or-should-i-say-bool/) so C# will now act properly. Closes https://github.com/facebook/css-layout/pull/226 Reviewed By: IanChilds Differential Revision: D3967349 Pulled By: emilsjolander fbshipit-source-id: f61d3bb39eb1b0b6e749629825234615b425e930 --- csharp/Facebook.CSSLayout/CSSNode.cs | 9 ++++----- csharp/Facebook.CSSLayout/Native.cs | 8 ++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/csharp/Facebook.CSSLayout/CSSNode.cs b/csharp/Facebook.CSSLayout/CSSNode.cs index a80d8f83..f5b6a520 100644 --- a/csharp/Facebook.CSSLayout/CSSNode.cs +++ b/csharp/Facebook.CSSLayout/CSSNode.cs @@ -54,6 +54,9 @@ namespace Facebook.CSSLayout _isDisposed = true; Native.CSSNodeFree(_cssNode); GCHandle.FromIntPtr(_context).Free(); + _children = null; + _parent = null; + _measureFunction = null; } } @@ -68,11 +71,7 @@ namespace Facebook.CSSLayout public void Reset() { - Native.CSSNodeFree(_cssNode); - GCHandle.FromIntPtr(_context).Free(); - _children = null; - _parent = null; - _measureFunction = null; + Dispose(true); } public bool IsDirty diff --git a/csharp/Facebook.CSSLayout/Native.cs b/csharp/Facebook.CSSLayout/Native.cs index 76cdca61..61a88a4c 100644 --- a/csharp/Facebook.CSSLayout/Native.cs +++ b/csharp/Facebook.CSSLayout/Native.cs @@ -47,12 +47,14 @@ namespace Facebook.CSSLayout public static extern void CSSNodeMarkDirty(IntPtr node); [DllImport(DllName)] + [return: MarshalAs(UnmanagedType.I1)] public static extern bool CSSNodeIsDirty(IntPtr node); [DllImport(DllName)] public static extern void CSSNodePrint(IntPtr node, CSSPrintOptions options); [DllImport(DllName)] + [return: MarshalAs(UnmanagedType.I1)] public static extern bool CSSValueIsUndefined(float value); #region CSS_NODE_PROPERTY @@ -76,15 +78,17 @@ namespace Facebook.CSSLayout public static extern CSSPrintFunc CSSNodeGePrintFunc(IntPtr node); [DllImport(DllName)] - public static extern void CSSNodeSetIsTextnode(IntPtr node, bool isTextNode); + public static extern void CSSNodeSetIsTextnode(IntPtr node, [MarshalAs(UnmanagedType.I1)] bool isTextNode); [DllImport(DllName)] + [return: MarshalAs(UnmanagedType.I1)] public static extern bool CSSNodeGetIsTextnode(IntPtr node); [DllImport(DllName)] - public static extern void CSSNodeSetHasNewLayout(IntPtr node, bool hasNewLayout); + public static extern void CSSNodeSetHasNewLayout(IntPtr node, [MarshalAs(UnmanagedType.I1)] bool hasNewLayout); [DllImport(DllName)] + [return: MarshalAs(UnmanagedType.I1)] public static extern bool CSSNodeGetHasNewLayout(IntPtr node); #endregion