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
b239449e
"Core/LuaInterface/LuaHideAttribute.cs" did not exist on "75f462546757c2b70078be13a9592895d7e9d65e"
Commit
b239449e
authored
Dec 29, 2014
by
Isaac Brodsky
Browse files
Fix passing null into LuaFunction
parent
c1b3a950
Changes
4
Show whitespace changes
Inline
Side-by-side
Core/NLua/CheckType.cs
View file @
b239449e
...
@@ -154,13 +154,13 @@ namespace NLua
...
@@ -154,13 +154,13 @@ namespace NLua
else
if
(
luatype
==
LuaTypes
.
Nil
)
else
if
(
luatype
==
LuaTypes
.
Nil
)
return
extractNetObject
;
// kevinh - silently convert nil to a null string pointer
return
extractNetObject
;
// kevinh - silently convert nil to a null string pointer
}
else
if
(
paramType
==
typeof
(
LuaTable
))
{
}
else
if
(
paramType
==
typeof
(
LuaTable
))
{
if
(
luatype
==
LuaTypes
.
Table
)
if
(
luatype
==
LuaTypes
.
Table
||
luatype
==
LuaTypes
.
Nil
)
return
extractValues
[
extractKey
];
return
extractValues
[
extractKey
];
}
else
if
(
paramType
==
typeof
(
LuaUserData
))
{
}
else
if
(
paramType
==
typeof
(
LuaUserData
))
{
if
(
luatype
==
LuaTypes
.
UserData
)
if
(
luatype
==
LuaTypes
.
UserData
||
luatype
==
LuaTypes
.
Nil
)
return
extractValues
[
extractKey
];
return
extractValues
[
extractKey
];
}
else
if
(
paramType
==
typeof
(
LuaFunction
))
{
}
else
if
(
paramType
==
typeof
(
LuaFunction
))
{
if
(
luatype
==
LuaTypes
.
Function
)
if
(
luatype
==
LuaTypes
.
Function
||
luatype
==
LuaTypes
.
Nil
)
return
extractValues
[
extractKey
];
return
extractValues
[
extractKey
];
}
else
if
(
typeof
(
Delegate
).
IsAssignableFrom
(
paramType
)
&&
luatype
==
LuaTypes
.
Function
)
}
else
if
(
typeof
(
Delegate
).
IsAssignableFrom
(
paramType
)
&&
luatype
==
LuaTypes
.
Function
)
return
new
ExtractValue
(
new
DelegateGenerator
(
translator
,
paramType
).
ExtractGenerated
);
return
new
ExtractValue
(
new
DelegateGenerator
(
translator
,
paramType
).
ExtractGenerated
);
...
...
Core/NLua/ObjectTranslator.cs
View file @
b239449e
...
@@ -830,7 +830,10 @@ namespace NLua
...
@@ -830,7 +830,10 @@ namespace NLua
internal
LuaTable
GetTable
(
LuaState
luaState
,
int
index
)
internal
LuaTable
GetTable
(
LuaState
luaState
,
int
index
)
{
{
LuaLib
.
LuaPushValue
(
luaState
,
index
);
LuaLib
.
LuaPushValue
(
luaState
,
index
);
return
new
LuaTable
(
LuaLib
.
LuaRef
(
luaState
,
1
),
interpreter
);
int
reference
=
LuaLib
.
LuaRef
(
luaState
,
1
);
if
(
reference
==
-
1
)
return
null
;
return
new
LuaTable
(
reference
,
interpreter
);
}
}
/*
/*
...
@@ -839,7 +842,10 @@ namespace NLua
...
@@ -839,7 +842,10 @@ namespace NLua
internal
LuaUserData
GetUserData
(
LuaState
luaState
,
int
index
)
internal
LuaUserData
GetUserData
(
LuaState
luaState
,
int
index
)
{
{
LuaLib
.
LuaPushValue
(
luaState
,
index
);
LuaLib
.
LuaPushValue
(
luaState
,
index
);
return
new
LuaUserData
(
LuaLib
.
LuaRef
(
luaState
,
1
),
interpreter
);
int
reference
=
LuaLib
.
LuaRef
(
luaState
,
1
);
if
(
reference
==
-
1
)
return
null
;
return
new
LuaUserData
(
reference
,
interpreter
);
}
}
/*
/*
...
@@ -848,7 +854,10 @@ namespace NLua
...
@@ -848,7 +854,10 @@ namespace NLua
internal
LuaFunction
GetFunction
(
LuaState
luaState
,
int
index
)
internal
LuaFunction
GetFunction
(
LuaState
luaState
,
int
index
)
{
{
LuaLib
.
LuaPushValue
(
luaState
,
index
);
LuaLib
.
LuaPushValue
(
luaState
,
index
);
return
new
LuaFunction
(
LuaLib
.
LuaRef
(
luaState
,
1
),
interpreter
);
int
reference
=
LuaLib
.
LuaRef
(
luaState
,
1
);
if
(
reference
==
-
1
)
return
null
;
return
new
LuaFunction
(
reference
,
interpreter
);
}
}
/*
/*
...
...
tests/LuaTests.cs
View file @
b239449e
...
@@ -153,6 +153,26 @@ namespace NLuaTest
...
@@ -153,6 +153,26 @@ namespace NLuaTest
}
}
}
}
/*
* Tests passing a LuaFunction
*/
[
Test
]
public
void
CallLuaFunction
()
{
using
(
Lua
lua
=
new
Lua
())
{
lua
.
DoString
(
"function someFunc(v1,v2) return v1 + v2 end"
);
lua
[
"funcObject"
]
=
lua
.
GetFunction
(
"someFunc"
);
lua
.
DoString
(
"luanet.load_assembly('mscorlib')"
);
lua
.
DoString
(
"luanet.load_assembly('NLuaTest')"
);
lua
.
DoString
(
"TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"
);
lua
.
DoString
(
"b = TestClass():TestLuaFunction(funcObject)[0]"
);
Assert
.
AreEqual
(
3
,
lua
[
"b"
]);
lua
.
DoString
(
"a = TestClass():TestLuaFunction(nil)"
);
Assert
.
AreEqual
(
null
,
lua
[
"a"
]);
}
}
/*
/*
* Tests capturing an exception
* Tests capturing an exception
*/
*/
...
...
tests/TestLua.cs
View file @
b239449e
...
@@ -374,11 +374,19 @@ namespace NLuaTest.Mock
...
@@ -374,11 +374,19 @@ namespace NLuaTest.Mock
set
{
}
set
{
}
}
}
public
TimeSpan
?
NullableMethod
(
TimeSpan
?
input
)
public
TimeSpan
?
NullableMethod
(
TimeSpan
?
input
)
{
{
return
input
;
return
input
;
}
}
public
object
[]
TestLuaFunction
(
LuaFunction
func
)
{
if
(
func
!=
null
)
{
return
func
.
Call
(
1
,
2
);
}
return
null
;
}
public
int
sum
(
int
x
,
int
y
)
public
int
sum
(
int
x
,
int
y
)
{
{
return
x
+
y
;
return
x
+
y
;
...
...
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