Skip to content

Commit 5df67cd

Browse files
committed
Fixed the generation for parameters of type void**.
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent d97016f commit 5df67cd

File tree

4 files changed

+9
-2
lines changed

4 files changed

+9
-2
lines changed

src/Generator/Generators/CSharp/CSharpMarshal.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,8 @@ public override bool VisitPointerType(PointerType pointer, TypeQualifiers quals)
546546
}
547547

548548
pointer.QualifiedPointee.Visit(this);
549-
bool isVoid = primitive == PrimitiveType.Void && pointee.IsAddress();
549+
bool isVoid = primitive == PrimitiveType.Void &&
550+
pointee.IsAddress() && pointer.IsReference();
550551
if (pointer.Pointee.Desugar(false) is TemplateParameterSubstitutionType ||
551552
isVoid)
552553
{

tests/Common/Common.Tests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
public class CommonTests : GeneratorTestFixture
1010
{
1111
[Test]
12-
public void TestCodeGeneration()
12+
public unsafe void TestCodeGeneration()
1313
{
1414
#pragma warning disable 0168 // warning CS0168: The variable `foo' is declared but never used
1515
#pragma warning disable 0219 // warning CS0219: The variable `foo' is assigned but its value is never used
@@ -58,6 +58,7 @@ public void TestCodeGeneration()
5858
Common.SMallFollowedByCapital();
5959
Common.IntegerOverload(0);
6060
Common.IntegerOverload((uint) 0);
61+
Common.TakeVoidStarStar(null);
6162
using (new DerivedFromSecondaryBaseWithIgnoredVirtualMethod()) { }
6263

6364
#pragma warning restore 0168

tests/Common/Common.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,3 +1010,7 @@ void integerOverload(unsigned long i)
10101010
void takeReferenceToVoidStar(const void*& p)
10111011
{
10121012
}
1013+
1014+
void takeVoidStarStar(void** p)
1015+
{
1016+
}

tests/Common/Common.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,3 +1481,4 @@ DLL_API void integerOverload(unsigned int i);
14811481
DLL_API void integerOverload(long i);
14821482
DLL_API void integerOverload(unsigned long i);
14831483
DLL_API void takeReferenceToVoidStar(const void*& p);
1484+
DLL_API void takeVoidStarStar(void** p);

0 commit comments

Comments
 (0)