Skip to content

Commit

Permalink
nullable本身是值类型,但如果没有值时boxing后会为null,在clone时应该特殊处理,fix Tencent#210
Browse files Browse the repository at this point in the history
  • Loading branch information
chexiongsheng committed Nov 17, 2020
1 parent 3084863 commit eec6828
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions Source/VSProj/Src/Core/VirtualMachine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,8 @@ void store(Value* stackBase, Value* dst, Value* src, object[] managedStack)
*dst = *src;
if (dst->Type >= ValueType.Object)
{
var obj = (dst->Type == ValueType.ValueType) ? objectClone.Clone(managedStack[src->Value1])
var obj = (dst->Type == ValueType.ValueType && managedStack[src->Value1] != null) //Nullable box后可能为空
? objectClone.Clone(managedStack[src->Value1])
: managedStack[src->Value1];
var dstPos = dst->Value1 = (int)(dst - stackBase);
managedStack[dstPos] = obj;
Expand All @@ -230,7 +231,9 @@ void copy(Value* stackBase, Value* dst, Value* src, object[] managedStack)
*dst = *src;
if (dst->Type == ValueType.ValueType)
{
var obj = objectClone.Clone(managedStack[src->Value1]);
object obj = null;
if (managedStack[src->Value1] != null) //Nullable box后可能为空
obj = objectClone.Clone(managedStack[src->Value1]);
var dstPos = dst->Value1 = (int)(dst - stackBase);
managedStack[dstPos] = obj;
}
Expand Down

0 comments on commit eec6828

Please sign in to comment.