Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
NLua
Commits
f6a8c49d
Commit
f6a8c49d
authored
Apr 07, 2015
by
dpull
Browse files
test targetObject equals null.(some class override operator ==.)
parent
8bb11599
Changes
1
Show whitespace changes
Inline
Side-by-side
Core/NLua/Method/LuaMethodWrapper.cs
View file @
f6a8c49d
...
@@ -141,10 +141,16 @@ namespace NLua.Method
...
@@ -141,10 +141,16 @@ namespace NLua.Method
SetPendingException
(
null
);
SetPendingException
(
null
);
if
(
methodToCall
==
null
)
{
// Method from name
if
(
methodToCall
==
null
)
{
// Method from name
if
(
isStatic
)
if
(
isStatic
)
{
targetObject
=
null
;
targetObject
=
null
;
else
}
else
{
targetObject
=
_ExtractTarget
(
luaState
,
1
);
targetObject
=
_ExtractTarget
(
luaState
,
1
);
if
(
targetObject
==
null
||
targetObject
.
Equals
(
null
))
{
_Translator
.
ThrowError
(
luaState
,
String
.
Format
(
"instance method '{0}' requires a non null target object"
,
_MethodName
));
LuaLib
.
LuaPushNil
(
luaState
);
return
1
;
}
}
if
(
_LastCalledMethod
.
cachedMethod
!=
null
)
{
// Cached?
if
(
_LastCalledMethod
.
cachedMethod
!=
null
)
{
// Cached?
int
numStackToSkip
=
isStatic
?
0
:
1
;
// If this is an instance invoe we will have an extra arg on the stack for the targetObject
int
numStackToSkip
=
isStatic
?
0
:
1
;
// If this is an instance invoe we will have an extra arg on the stack for the targetObject
...
@@ -207,12 +213,6 @@ namespace NLua.Method
...
@@ -207,12 +213,6 @@ namespace NLua.Method
// System.Diagnostics.Debug.WriteLine("cache miss on " + methodName);
// System.Diagnostics.Debug.WriteLine("cache miss on " + methodName);
// If we are running an instance variable, we can now pop the targetObject from the stack
// If we are running an instance variable, we can now pop the targetObject from the stack
if
(!
isStatic
)
{
if
(!
isStatic
)
{
if
(
targetObject
==
null
)
{
_Translator
.
ThrowError
(
luaState
,
String
.
Format
(
"instance method '{0}' requires a non null target object"
,
_MethodName
));
LuaLib
.
LuaPushNil
(
luaState
);
return
1
;
}
LuaLib
.
LuaRemove
(
luaState
,
1
);
// Pops the receiver
LuaLib
.
LuaRemove
(
luaState
,
1
);
// Pops the receiver
}
}
...
@@ -264,6 +264,11 @@ namespace NLua.Method
...
@@ -264,6 +264,11 @@ namespace NLua.Method
}
else
{
}
else
{
if
(!
methodToCall
.
IsStatic
&&
!
methodToCall
.
IsConstructor
&&
targetObject
==
null
)
{
if
(!
methodToCall
.
IsStatic
&&
!
methodToCall
.
IsConstructor
&&
targetObject
==
null
)
{
targetObject
=
_ExtractTarget
(
luaState
,
1
);
targetObject
=
_ExtractTarget
(
luaState
,
1
);
if
(
targetObject
==
null
||
targetObject
.
Equals
(
null
))
{
_Translator
.
ThrowError
(
luaState
,
String
.
Format
(
"instance method '{0}' requires a non null target object"
,
_MethodName
));
LuaLib
.
LuaPushNil
(
luaState
);
return
1
;
}
LuaLib
.
LuaRemove
(
luaState
,
1
);
// Pops the receiver
LuaLib
.
LuaRemove
(
luaState
,
1
);
// Pops the receiver
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment