Skip to content

Commit 4f10d71

Browse files
committed
[Java.Interop] Do not dispose the return value
Do not dispose the return valueat at all. Not even using `DisposeUnlessReferenced`, becuse that would dispose the IJavaPeerable object and not just the reference.
1 parent d42aaf8 commit 4f10d71

File tree

3 files changed

+2
-19
lines changed

3 files changed

+2
-19
lines changed

src/Java.Interop.Export/Tests/Java.Interop/MarshalMemberBuilderTest.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -477,14 +477,6 @@ public void CreateMarshalFromJniMethodExpression_FuncIJavaObject ()
477477
}
478478
finally
479479
{
480-
if (null != __mret)
481-
{
482-
__mret.DisposeUnlessReferenced();
483-
}
484-
else
485-
{
486-
default(void);
487-
}
488480
__envp.Dispose();
489481
}
490482
}");

src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ public override void DestroyGenericArgumentState (IJavaPeerable value, ref JniVa
592592
public override Expression CreateParameterFromManagedExpression (JniValueMarshalerContext context, ParameterExpression sourceValue, ParameterAttributes synchronize)
593593
{
594594
var r = CreateIntermediaryExpressionFromManagedExpression (context, sourceValue);
595+
context.CleanupStatements.Add (DisposeObjectReference (r));
595596

596597
var h = Expression.Variable (typeof (IntPtr), sourceValue.Name + "_handle");
597598
context.LocalVariables.Add (h);
@@ -609,9 +610,6 @@ Expression CreateIntermediaryExpressionFromManagedExpression (JniValueMarshalerC
609610
test: Expression.Equal (Expression.Constant (null), sourceValue),
610611
ifTrue: Expression.Assign (r, Expression.New (typeof (JniObjectReference))),
611612
ifFalse: Expression.Assign (r, Expression.Property (sourceValue, "PeerReference"))));
612-
context.CleanupStatements.Add (Expression.IfThen (
613-
test: Expression.NotEqual (Expression.Constant (null), sourceValue),
614-
ifTrue: Expression.Call (sourceValue, typeof (IJavaPeerable).GetTypeInfo ().GetDeclaredMethod ("DisposeUnlessReferenced"))));
615613

616614
return r;
617615
}

src/Java.Interop/Tests/Java.Interop/JniValueMarshalerContractTests.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -608,14 +608,7 @@ protected override string GetExpectedReturnValueFromManagedExpression (string jv
608608
}}
609609
finally
610610
{{
611-
if (null != __value)
612-
{{
613-
__value.DisposeUnlessReferenced();
614-
}}
615-
else
616-
{{
617-
default(void);
618-
}}
611+
default(void);
619612
}}
620613
}}";
621614
}

0 commit comments

Comments
 (0)