Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOProUnity_V2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
FF
YGOProUnity_V2
Commits
7958581b
Commit
7958581b
authored
Jun 30, 2021
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update lua version
parent
4b2d610a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
60 additions
and
39 deletions
+60
-39
AI_core_vs2017solution/lua/lapi.c
AI_core_vs2017solution/lua/lapi.c
+6
-6
AI_core_vs2017solution/lua/lauxlib.c
AI_core_vs2017solution/lua/lauxlib.c
+7
-2
AI_core_vs2017solution/lua/lcode.c
AI_core_vs2017solution/lua/lcode.c
+1
-1
AI_core_vs2017solution/lua/ldebug.c
AI_core_vs2017solution/lua/ldebug.c
+4
-3
AI_core_vs2017solution/lua/liolib.c
AI_core_vs2017solution/lua/liolib.c
+2
-0
AI_core_vs2017solution/lua/llex.c
AI_core_vs2017solution/lua/llex.c
+17
-14
AI_core_vs2017solution/lua/lobject.c
AI_core_vs2017solution/lua/lobject.c
+1
-1
AI_core_vs2017solution/lua/lparser.c
AI_core_vs2017solution/lua/lparser.c
+3
-0
AI_core_vs2017solution/lua/lua.h
AI_core_vs2017solution/lua/lua.h
+3
-4
AI_core_vs2017solution/lua/lundump.c
AI_core_vs2017solution/lua/lundump.c
+16
-8
No files found.
AI_core_vs2017solution/lua/lapi.c
View file @
7958581b
...
@@ -1254,13 +1254,12 @@ LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n) {
...
@@ -1254,13 +1254,12 @@ LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n) {
}
}
static
UpVal
**
getupvalref
(
lua_State
*
L
,
int
fidx
,
int
n
,
LClosure
**
pf
)
{
static
UpVal
**
getupvalref
(
lua_State
*
L
,
int
fidx
,
int
n
)
{
LClosure
*
f
;
LClosure
*
f
;
StkId
fi
=
index2addr
(
L
,
fidx
);
StkId
fi
=
index2addr
(
L
,
fidx
);
api_check
(
L
,
ttisLclosure
(
fi
),
"Lua function expected"
);
api_check
(
L
,
ttisLclosure
(
fi
),
"Lua function expected"
);
f
=
clLvalue
(
fi
);
f
=
clLvalue
(
fi
);
api_check
(
L
,
(
1
<=
n
&&
n
<=
f
->
p
->
sizeupvalues
),
"invalid upvalue index"
);
api_check
(
L
,
(
1
<=
n
&&
n
<=
f
->
p
->
sizeupvalues
),
"invalid upvalue index"
);
if
(
pf
)
*
pf
=
f
;
return
&
f
->
upvals
[
n
-
1
];
/* get its upvalue pointer */
return
&
f
->
upvals
[
n
-
1
];
/* get its upvalue pointer */
}
}
...
@@ -1269,7 +1268,7 @@ LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) {
...
@@ -1269,7 +1268,7 @@ LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) {
StkId
fi
=
index2addr
(
L
,
fidx
);
StkId
fi
=
index2addr
(
L
,
fidx
);
switch
(
ttype
(
fi
))
{
switch
(
ttype
(
fi
))
{
case
LUA_TLCL
:
{
/* lua closure */
case
LUA_TLCL
:
{
/* lua closure */
return
*
getupvalref
(
L
,
fidx
,
n
,
NULL
);
return
*
getupvalref
(
L
,
fidx
,
n
);
}
}
case
LUA_TCCL
:
{
/* C closure */
case
LUA_TCCL
:
{
/* C closure */
CClosure
*
f
=
clCvalue
(
fi
);
CClosure
*
f
=
clCvalue
(
fi
);
...
@@ -1286,9 +1285,10 @@ LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) {
...
@@ -1286,9 +1285,10 @@ LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) {
LUA_API
void
lua_upvaluejoin
(
lua_State
*
L
,
int
fidx1
,
int
n1
,
LUA_API
void
lua_upvaluejoin
(
lua_State
*
L
,
int
fidx1
,
int
n1
,
int
fidx2
,
int
n2
)
{
int
fidx2
,
int
n2
)
{
LClosure
*
f1
;
UpVal
**
up1
=
getupvalref
(
L
,
fidx1
,
n1
);
UpVal
**
up1
=
getupvalref
(
L
,
fidx1
,
n1
,
&
f1
);
UpVal
**
up2
=
getupvalref
(
L
,
fidx2
,
n2
);
UpVal
**
up2
=
getupvalref
(
L
,
fidx2
,
n2
,
NULL
);
if
(
*
up1
==
*
up2
)
return
;
luaC_upvdeccount
(
L
,
*
up1
);
luaC_upvdeccount
(
L
,
*
up1
);
*
up1
=
*
up2
;
*
up1
=
*
up2
;
(
*
up1
)
->
refcount
++
;
(
*
up1
)
->
refcount
++
;
...
...
AI_core_vs2017solution/lua/lauxlib.c
View file @
7958581b
...
@@ -1011,8 +1011,13 @@ static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
...
@@ -1011,8 +1011,13 @@ static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
free
(
ptr
);
free
(
ptr
);
return
NULL
;
return
NULL
;
}
}
else
else
{
/* cannot fail when shrinking a block */
return
realloc
(
ptr
,
nsize
);
void
*
newptr
=
realloc
(
ptr
,
nsize
);
if
(
newptr
==
NULL
&&
ptr
!=
NULL
&&
nsize
<=
osize
)
return
ptr
;
/* keep the original block */
else
/* no fail or not shrinking */
return
newptr
;
/* use the new block */
}
}
}
...
...
AI_core_vs2017solution/lua/lcode.c
View file @
7958581b
...
@@ -1061,7 +1061,7 @@ static void codecomp (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) {
...
@@ -1061,7 +1061,7 @@ static void codecomp (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) {
/*
/*
** Ap
l
ly prefix operation 'op' to expression 'e'.
** Ap
p
ly prefix operation 'op' to expression 'e'.
*/
*/
void
luaK_prefix
(
FuncState
*
fs
,
UnOpr
op
,
expdesc
*
e
,
int
line
)
{
void
luaK_prefix
(
FuncState
*
fs
,
UnOpr
op
,
expdesc
*
e
,
int
line
)
{
static
const
expdesc
ef
=
{
VKINT
,
{
0
},
NO_JUMP
,
NO_JUMP
};
static
const
expdesc
ef
=
{
VKINT
,
{
0
},
NO_JUMP
,
NO_JUMP
};
...
...
AI_core_vs2017solution/lua/ldebug.c
View file @
7958581b
...
@@ -133,10 +133,11 @@ static const char *upvalname (Proto *p, int uv) {
...
@@ -133,10 +133,11 @@ static const char *upvalname (Proto *p, int uv) {
static
const
char
*
findvararg
(
CallInfo
*
ci
,
int
n
,
StkId
*
pos
)
{
static
const
char
*
findvararg
(
CallInfo
*
ci
,
int
n
,
StkId
*
pos
)
{
int
nparams
=
clLvalue
(
ci
->
func
)
->
p
->
numparams
;
int
nparams
=
clLvalue
(
ci
->
func
)
->
p
->
numparams
;
if
(
n
>=
cast_int
(
ci
->
u
.
l
.
base
-
ci
->
func
)
-
nparams
)
int
nvararg
=
cast_int
(
ci
->
u
.
l
.
base
-
ci
->
func
)
-
nparams
;
if
(
n
<=
-
nvararg
)
return
NULL
;
/* no such vararg */
return
NULL
;
/* no such vararg */
else
{
else
{
*
pos
=
ci
->
func
+
nparams
+
n
;
*
pos
=
ci
->
func
+
nparams
-
n
;
return
"(*vararg)"
;
/* generic name for any vararg */
return
"(*vararg)"
;
/* generic name for any vararg */
}
}
}
}
...
@@ -148,7 +149,7 @@ static const char *findlocal (lua_State *L, CallInfo *ci, int n,
...
@@ -148,7 +149,7 @@ static const char *findlocal (lua_State *L, CallInfo *ci, int n,
StkId
base
;
StkId
base
;
if
(
isLua
(
ci
))
{
if
(
isLua
(
ci
))
{
if
(
n
<
0
)
/* access to vararg values? */
if
(
n
<
0
)
/* access to vararg values? */
return
findvararg
(
ci
,
-
n
,
pos
);
return
findvararg
(
ci
,
n
,
pos
);
else
{
else
{
base
=
ci
->
u
.
l
.
base
;
base
=
ci
->
u
.
l
.
base
;
name
=
luaF_getlocalname
(
ci_func
(
ci
)
->
p
,
n
,
currentpc
(
ci
));
name
=
luaF_getlocalname
(
ci_func
(
ci
)
->
p
,
n
,
currentpc
(
ci
));
...
...
AI_core_vs2017solution/lua/liolib.c
View file @
7958581b
...
@@ -277,6 +277,8 @@ static int io_popen (lua_State *L) {
...
@@ -277,6 +277,8 @@ static int io_popen (lua_State *L) {
const
char
*
filename
=
luaL_checkstring
(
L
,
1
);
const
char
*
filename
=
luaL_checkstring
(
L
,
1
);
const
char
*
mode
=
luaL_optstring
(
L
,
2
,
"r"
);
const
char
*
mode
=
luaL_optstring
(
L
,
2
,
"r"
);
LStream
*
p
=
newprefile
(
L
);
LStream
*
p
=
newprefile
(
L
);
luaL_argcheck
(
L
,
((
mode
[
0
]
==
'r'
||
mode
[
0
]
==
'w'
)
&&
mode
[
1
]
==
'\0'
),
2
,
"invalid mode"
);
p
->
f
=
l_popen
(
L
,
filename
,
mode
);
p
->
f
=
l_popen
(
L
,
filename
,
mode
);
p
->
closef
=
&
io_pclose
;
p
->
closef
=
&
io_pclose
;
return
(
p
->
f
==
NULL
)
?
luaL_fileresult
(
L
,
0
,
filename
)
:
1
;
return
(
p
->
f
==
NULL
)
?
luaL_fileresult
(
L
,
0
,
filename
)
:
1
;
...
...
AI_core_vs2017solution/lua/llex.c
View file @
7958581b
...
@@ -244,12 +244,12 @@ static int read_numeral (LexState *ls, SemInfo *seminfo) {
...
@@ -244,12 +244,12 @@ static int read_numeral (LexState *ls, SemInfo *seminfo) {
/*
/*
**
skip a sequence '[=*[' or ']=*]'; if sequence is well formed, return
**
reads a sequence '[=*[' or ']=*]', leaving the last bracket.
**
its number of '='s; otherwise, return a negative number (-1 iff there
**
If sequence is well formed, return its number of '='s + 2; otherwise,
**
are no '='s after initial bracket)
**
return 1 if there is no '='s or 0 otherwise (an unfinished '[==...').
*/
*/
static
in
t
skip_sep
(
LexState
*
ls
)
{
static
size_
t
skip_sep
(
LexState
*
ls
)
{
in
t
count
=
0
;
size_
t
count
=
0
;
int
s
=
ls
->
current
;
int
s
=
ls
->
current
;
lua_assert
(
s
==
'['
||
s
==
']'
);
lua_assert
(
s
==
'['
||
s
==
']'
);
save_and_next
(
ls
);
save_and_next
(
ls
);
...
@@ -257,11 +257,14 @@ static int skip_sep (LexState *ls) {
...
@@ -257,11 +257,14 @@ static int skip_sep (LexState *ls) {
save_and_next
(
ls
);
save_and_next
(
ls
);
count
++
;
count
++
;
}
}
return
(
ls
->
current
==
s
)
?
count
:
(
-
count
)
-
1
;
return
(
ls
->
current
==
s
)
?
count
+
2
:
(
count
==
0
)
?
1
:
0
;
}
}
static
void
read_long_string
(
LexState
*
ls
,
SemInfo
*
seminfo
,
in
t
sep
)
{
static
void
read_long_string
(
LexState
*
ls
,
SemInfo
*
seminfo
,
size_
t
sep
)
{
int
line
=
ls
->
linenumber
;
/* initial line (for error message) */
int
line
=
ls
->
linenumber
;
/* initial line (for error message) */
save_and_next
(
ls
);
/* skip 2nd '[' */
save_and_next
(
ls
);
/* skip 2nd '[' */
if
(
currIsNewline
(
ls
))
/* string starts with a newline? */
if
(
currIsNewline
(
ls
))
/* string starts with a newline? */
...
@@ -295,8 +298,8 @@ static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) {
...
@@ -295,8 +298,8 @@ static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) {
}
}
}
endloop
:
}
endloop
:
if
(
seminfo
)
if
(
seminfo
)
seminfo
->
ts
=
luaX_newstring
(
ls
,
luaZ_buffer
(
ls
->
buff
)
+
(
2
+
sep
)
,
seminfo
->
ts
=
luaX_newstring
(
ls
,
luaZ_buffer
(
ls
->
buff
)
+
sep
,
luaZ_bufflen
(
ls
->
buff
)
-
2
*
(
2
+
sep
)
);
luaZ_bufflen
(
ls
->
buff
)
-
2
*
sep
);
}
}
...
@@ -444,9 +447,9 @@ static int llex (LexState *ls, SemInfo *seminfo) {
...
@@ -444,9 +447,9 @@ static int llex (LexState *ls, SemInfo *seminfo) {
/* else is a comment */
/* else is a comment */
next
(
ls
);
next
(
ls
);
if
(
ls
->
current
==
'['
)
{
/* long comment? */
if
(
ls
->
current
==
'['
)
{
/* long comment? */
in
t
sep
=
skip_sep
(
ls
);
size_
t
sep
=
skip_sep
(
ls
);
luaZ_resetbuffer
(
ls
->
buff
);
/* 'skip_sep' may dirty the buffer */
luaZ_resetbuffer
(
ls
->
buff
);
/* 'skip_sep' may dirty the buffer */
if
(
sep
>=
0
)
{
if
(
sep
>=
2
)
{
read_long_string
(
ls
,
NULL
,
sep
);
/* skip long comment */
read_long_string
(
ls
,
NULL
,
sep
);
/* skip long comment */
luaZ_resetbuffer
(
ls
->
buff
);
/* previous call may dirty the buff. */
luaZ_resetbuffer
(
ls
->
buff
);
/* previous call may dirty the buff. */
break
;
break
;
...
@@ -458,12 +461,12 @@ static int llex (LexState *ls, SemInfo *seminfo) {
...
@@ -458,12 +461,12 @@ static int llex (LexState *ls, SemInfo *seminfo) {
break
;
break
;
}
}
case
'['
:
{
/* long string or simply '[' */
case
'['
:
{
/* long string or simply '[' */
in
t
sep
=
skip_sep
(
ls
);
size_
t
sep
=
skip_sep
(
ls
);
if
(
sep
>=
0
)
{
if
(
sep
>=
2
)
{
read_long_string
(
ls
,
seminfo
,
sep
);
read_long_string
(
ls
,
seminfo
,
sep
);
return
TK_STRING
;
return
TK_STRING
;
}
}
else
if
(
sep
!=
-
1
)
/* '[=...' missing second bracket */
else
if
(
sep
==
0
)
/* '[=...' missing second bracket */
lexerror
(
ls
,
"invalid long string delimiter"
,
TK_STRING
);
lexerror
(
ls
,
"invalid long string delimiter"
,
TK_STRING
);
return
'['
;
return
'['
;
}
}
...
...
AI_core_vs2017solution/lua/lobject.c
View file @
7958581b
...
@@ -266,7 +266,7 @@ static const char *l_str2dloc (const char *s, lua_Number *result, int mode) {
...
@@ -266,7 +266,7 @@ static const char *l_str2dloc (const char *s, lua_Number *result, int mode) {
** - 'n'/'N' means 'inf' or 'nan' (which should be rejected)
** - 'n'/'N' means 'inf' or 'nan' (which should be rejected)
** - '.' just optimizes the search for the common case (nothing special)
** - '.' just optimizes the search for the common case (nothing special)
** This function accepts both the current locale or a dot as the radix
** This function accepts both the current locale or a dot as the radix
** mark. If the conver
t
ion fails, it may mean number has a dot but
** mark. If the conver
s
ion fails, it may mean number has a dot but
** locale accepts something else. In that case, the code copies 's'
** locale accepts something else. In that case, the code copies 's'
** to a buffer (because 's' is read-only), changes the dot to the
** to a buffer (because 's' is read-only), changes the dot to the
** current locale radix mark, and tries to convert again.
** current locale radix mark, and tries to convert again.
...
...
AI_core_vs2017solution/lua/lparser.c
View file @
7958581b
...
@@ -544,6 +544,7 @@ static void open_func (LexState *ls, FuncState *fs, BlockCnt *bl) {
...
@@ -544,6 +544,7 @@ static void open_func (LexState *ls, FuncState *fs, BlockCnt *bl) {
fs
->
bl
=
NULL
;
fs
->
bl
=
NULL
;
f
=
fs
->
f
;
f
=
fs
->
f
;
f
->
source
=
ls
->
source
;
f
->
source
=
ls
->
source
;
luaC_objbarrier
(
ls
->
L
,
f
,
f
->
source
);
f
->
maxstacksize
=
2
;
/* registers 0/1 are always valid */
f
->
maxstacksize
=
2
;
/* registers 0/1 are always valid */
enterblock
(
fs
,
bl
,
0
);
enterblock
(
fs
,
bl
,
0
);
}
}
...
@@ -1616,6 +1617,7 @@ static void mainfunc (LexState *ls, FuncState *fs) {
...
@@ -1616,6 +1617,7 @@ static void mainfunc (LexState *ls, FuncState *fs) {
fs
->
f
->
is_vararg
=
1
;
/* main function is always declared vararg */
fs
->
f
->
is_vararg
=
1
;
/* main function is always declared vararg */
init_exp
(
&
v
,
VLOCAL
,
0
);
/* create and... */
init_exp
(
&
v
,
VLOCAL
,
0
);
/* create and... */
newupvalue
(
fs
,
ls
->
envn
,
&
v
);
/* ...set environment upvalue */
newupvalue
(
fs
,
ls
->
envn
,
&
v
);
/* ...set environment upvalue */
luaC_objbarrier
(
ls
->
L
,
fs
->
f
,
ls
->
envn
);
luaX_next
(
ls
);
/* read first token */
luaX_next
(
ls
);
/* read first token */
statlist
(
ls
);
/* parse main body */
statlist
(
ls
);
/* parse main body */
check
(
ls
,
TK_EOS
);
check
(
ls
,
TK_EOS
);
...
@@ -1634,6 +1636,7 @@ LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
...
@@ -1634,6 +1636,7 @@ LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
sethvalue
(
L
,
L
->
top
,
lexstate
.
h
);
/* anchor it */
sethvalue
(
L
,
L
->
top
,
lexstate
.
h
);
/* anchor it */
luaD_inctop
(
L
);
luaD_inctop
(
L
);
funcstate
.
f
=
cl
->
p
=
luaF_newproto
(
L
);
funcstate
.
f
=
cl
->
p
=
luaF_newproto
(
L
);
luaC_objbarrier
(
L
,
cl
,
cl
->
p
);
funcstate
.
f
->
source
=
luaS_new
(
L
,
name
);
/* create and anchor TString */
funcstate
.
f
->
source
=
luaS_new
(
L
,
name
);
/* create and anchor TString */
lua_assert
(
iswhite
(
funcstate
.
f
));
/* do not need barrier here */
lua_assert
(
iswhite
(
funcstate
.
f
));
/* do not need barrier here */
lexstate
.
buff
=
buff
;
lexstate
.
buff
=
buff
;
...
...
AI_core_vs2017solution/lua/lua.h
View file @
7958581b
/*
/*
** $Id: lua.h,v 1.332.1.2 2018/06/13 16:58:17 roberto Exp $
** Lua - A Scripting Language
** Lua - A Scripting Language
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
** See Copyright Notice at the end of this file
** See Copyright Notice at the end of this file
...
@@ -19,11 +18,11 @@
...
@@ -19,11 +18,11 @@
#define LUA_VERSION_MAJOR "5"
#define LUA_VERSION_MAJOR "5"
#define LUA_VERSION_MINOR "3"
#define LUA_VERSION_MINOR "3"
#define LUA_VERSION_NUM 503
#define LUA_VERSION_NUM 503
#define LUA_VERSION_RELEASE "
5
"
#define LUA_VERSION_RELEASE "
6
"
#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-20
18
Lua.org, PUC-Rio"
#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-20
20
Lua.org, PUC-Rio"
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
...
@@ -460,7 +459,7 @@ struct lua_Debug {
...
@@ -460,7 +459,7 @@ struct lua_Debug {
/******************************************************************************
/******************************************************************************
* Copyright (C) 1994-20
18
Lua.org, PUC-Rio.
* Copyright (C) 1994-20
20
Lua.org, PUC-Rio.
*
*
* Permission is hereby granted, free of charge, to any person obtaining
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* a copy of this software and associated documentation files (the
...
...
AI_core_vs2017solution/lua/lundump.c
View file @
7958581b
...
@@ -85,8 +85,10 @@ static lua_Integer LoadInteger (LoadState *S) {
...
@@ -85,8 +85,10 @@ static lua_Integer LoadInteger (LoadState *S) {
}
}
static
TString
*
LoadString
(
LoadState
*
S
)
{
static
TString
*
LoadString
(
LoadState
*
S
,
Proto
*
p
)
{
lua_State
*
L
=
S
->
L
;
size_t
size
=
LoadByte
(
S
);
size_t
size
=
LoadByte
(
S
);
TString
*
ts
;
if
(
size
==
0xFF
)
if
(
size
==
0xFF
)
LoadVar
(
S
,
size
);
LoadVar
(
S
,
size
);
if
(
size
==
0
)
if
(
size
==
0
)
...
@@ -94,13 +96,17 @@ static TString *LoadString (LoadState *S) {
...
@@ -94,13 +96,17 @@ static TString *LoadString (LoadState *S) {
else
if
(
--
size
<=
LUAI_MAXSHORTLEN
)
{
/* short string? */
else
if
(
--
size
<=
LUAI_MAXSHORTLEN
)
{
/* short string? */
char
buff
[
LUAI_MAXSHORTLEN
];
char
buff
[
LUAI_MAXSHORTLEN
];
LoadVector
(
S
,
buff
,
size
);
LoadVector
(
S
,
buff
,
size
);
return
luaS_newlstr
(
S
->
L
,
buff
,
size
);
ts
=
luaS_newlstr
(
L
,
buff
,
size
);
}
}
else
{
/* long string */
else
{
/* long string */
TString
*
ts
=
luaS_createlngstrobj
(
S
->
L
,
size
);
ts
=
luaS_createlngstrobj
(
L
,
size
);
setsvalue2s
(
L
,
L
->
top
,
ts
);
/* anchor it ('loadVector' can GC) */
luaD_inctop
(
L
);
LoadVector
(
S
,
getstr
(
ts
),
size
);
/* load directly in final place */
LoadVector
(
S
,
getstr
(
ts
),
size
);
/* load directly in final place */
return
ts
;
L
->
top
--
;
/* pop string */
}
}
luaC_objbarrier
(
L
,
p
,
ts
);
return
ts
;
}
}
...
@@ -140,7 +146,7 @@ static void LoadConstants (LoadState *S, Proto *f) {
...
@@ -140,7 +146,7 @@ static void LoadConstants (LoadState *S, Proto *f) {
break
;
break
;
case
LUA_TSHRSTR
:
case
LUA_TSHRSTR
:
case
LUA_TLNGSTR
:
case
LUA_TLNGSTR
:
setsvalue2n
(
S
->
L
,
o
,
LoadString
(
S
));
setsvalue2n
(
S
->
L
,
o
,
LoadString
(
S
,
f
));
break
;
break
;
default:
default:
lua_assert
(
0
);
lua_assert
(
0
);
...
@@ -158,6 +164,7 @@ static void LoadProtos (LoadState *S, Proto *f) {
...
@@ -158,6 +164,7 @@ static void LoadProtos (LoadState *S, Proto *f) {
f
->
p
[
i
]
=
NULL
;
f
->
p
[
i
]
=
NULL
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
for
(
i
=
0
;
i
<
n
;
i
++
)
{
f
->
p
[
i
]
=
luaF_newproto
(
S
->
L
);
f
->
p
[
i
]
=
luaF_newproto
(
S
->
L
);
luaC_objbarrier
(
S
->
L
,
f
,
f
->
p
[
i
]);
LoadFunction
(
S
,
f
->
p
[
i
],
f
->
source
);
LoadFunction
(
S
,
f
->
p
[
i
],
f
->
source
);
}
}
}
}
...
@@ -189,18 +196,18 @@ static void LoadDebug (LoadState *S, Proto *f) {
...
@@ -189,18 +196,18 @@ static void LoadDebug (LoadState *S, Proto *f) {
for
(
i
=
0
;
i
<
n
;
i
++
)
for
(
i
=
0
;
i
<
n
;
i
++
)
f
->
locvars
[
i
].
varname
=
NULL
;
f
->
locvars
[
i
].
varname
=
NULL
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
for
(
i
=
0
;
i
<
n
;
i
++
)
{
f
->
locvars
[
i
].
varname
=
LoadString
(
S
);
f
->
locvars
[
i
].
varname
=
LoadString
(
S
,
f
);
f
->
locvars
[
i
].
startpc
=
LoadInt
(
S
);
f
->
locvars
[
i
].
startpc
=
LoadInt
(
S
);
f
->
locvars
[
i
].
endpc
=
LoadInt
(
S
);
f
->
locvars
[
i
].
endpc
=
LoadInt
(
S
);
}
}
n
=
LoadInt
(
S
);
n
=
LoadInt
(
S
);
for
(
i
=
0
;
i
<
n
;
i
++
)
for
(
i
=
0
;
i
<
n
;
i
++
)
f
->
upvalues
[
i
].
name
=
LoadString
(
S
);
f
->
upvalues
[
i
].
name
=
LoadString
(
S
,
f
);
}
}
static
void
LoadFunction
(
LoadState
*
S
,
Proto
*
f
,
TString
*
psource
)
{
static
void
LoadFunction
(
LoadState
*
S
,
Proto
*
f
,
TString
*
psource
)
{
f
->
source
=
LoadString
(
S
);
f
->
source
=
LoadString
(
S
,
f
);
if
(
f
->
source
==
NULL
)
/* no source in dump? */
if
(
f
->
source
==
NULL
)
/* no source in dump? */
f
->
source
=
psource
;
/* reuse parent's source */
f
->
source
=
psource
;
/* reuse parent's source */
f
->
linedefined
=
LoadInt
(
S
);
f
->
linedefined
=
LoadInt
(
S
);
...
@@ -271,6 +278,7 @@ LClosure *luaU_undump(lua_State *L, ZIO *Z, const char *name) {
...
@@ -271,6 +278,7 @@ LClosure *luaU_undump(lua_State *L, ZIO *Z, const char *name) {
setclLvalue
(
L
,
L
->
top
,
cl
);
setclLvalue
(
L
,
L
->
top
,
cl
);
luaD_inctop
(
L
);
luaD_inctop
(
L
);
cl
->
p
=
luaF_newproto
(
L
);
cl
->
p
=
luaF_newproto
(
L
);
luaC_objbarrier
(
L
,
cl
,
cl
->
p
);
LoadFunction
(
&
S
,
cl
->
p
,
NULL
);
LoadFunction
(
&
S
,
cl
->
p
,
NULL
);
lua_assert
(
cl
->
nupvalues
==
cl
->
p
->
sizeupvalues
);
lua_assert
(
cl
->
nupvalues
==
cl
->
p
->
sizeupvalues
);
luai_verifycode
(
L
,
buff
,
cl
->
p
);
luai_verifycode
(
L
,
buff
,
cl
->
p
);
...
...
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