diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-01 19:59:28 +0100 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-01 19:59:28 +0100 |
| commit | 26fc4b0e6268e58d7694ccf87e57de59d3b6b9a1 (patch) | |
| tree | ed3d810484032e4ce194964a3a13503fda5841d0 /src | |
| parent | 0f1346e33b59f7693f4ff40b5524c93d2629c5ce (diff) | |
debug when vc of ds newVal is null
Diffstat (limited to 'src')
| -rw-r--r-- | src/CompilerServices/CompilerServices.cs | 10 | ||||
| -rw-r--r-- | src/GraphicObjects/TemplatedGroup.cs | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/CompilerServices/CompilerServices.cs b/src/CompilerServices/CompilerServices.cs index c0acc5d5..42ae5f7b 100644 --- a/src/CompilerServices/CompilerServices.cs +++ b/src/CompilerServices/CompilerServices.cs @@ -456,7 +456,14 @@ namespace Crow il.MarkLabel (convert); if (dstType == typeof(string)) { + System.Reflection.Emit.Label emitNullStr = il.DefineLabel (); + il.Emit (OpCodes.Dup); + il.Emit (OpCodes.Brfalse, emitNullStr); il.Emit (OpCodes.Callvirt, CompilerServices.miObjToString); + il.Emit (OpCodes.Br, endConvert); + il.MarkLabel (emitNullStr); + il.Emit (OpCodes.Pop);//remove null string from stack + il.Emit (OpCodes.Ldstr, "");//replace with empty string } else if (dstType.IsPrimitive) { //il.Emit (OpCodes.Unbox_Any, dstType); il.Emit (OpCodes.Callvirt, CompilerServices.GetConvertMethod (dstType)); @@ -464,7 +471,10 @@ namespace Crow il.Emit (OpCodes.Unbox_Any, dstType); } else{ il.Emit (OpCodes.Stloc_0); //save orig value in loc0 + //first check if not null il.Emit (OpCodes.Ldloc_0); + il.Emit (OpCodes.Dup); + il.Emit (OpCodes.Brfalse, endConvert); il.Emit (OpCodes.Callvirt, miGetType); il.Emit (OpCodes.Ldtoken, dstType);//push destination property type for testing il.Emit (OpCodes.Call, CompilerServices.miGetTypeFromHandle); diff --git a/src/GraphicObjects/TemplatedGroup.cs b/src/GraphicObjects/TemplatedGroup.cs index 3c1fed9e..b05aad9f 100644 --- a/src/GraphicObjects/TemplatedGroup.cs +++ b/src/GraphicObjects/TemplatedGroup.cs @@ -135,7 +135,7 @@ namespace Crow NotifyValueChanged ("Data", data); - //lock (CurrentInterface.UpdateMutex) + lock (CurrentInterface.UpdateMutex) ClearItems (); if (data == null) |