Răsfoiți Sursa

fix: air101/103的V0008报错行号是错的 https://gitee.com/openLuat/LuatOS/issues/I519PM

Wendal Chen 4 ani în urmă
părinte
comite
d986a349d4
3 a modificat fișierele cu 10 adăugiri și 3 ștergeri
  1. 1 1
      lua/include/ldebug.h
  2. 7 0
      lua/src/ldebug.c
  3. 2 2
      lua/src/lundump.c

+ 1 - 1
lua/include/ldebug.h

@@ -13,7 +13,7 @@
 
 
 #define pcRel(pc, p)	(cast(int, (pc) - (p)->code) - 1)
 #define pcRel(pc, p)	(cast(int, (pc) - (p)->code) - 1)
 
 
-#define getfuncline(f,pc)	(((f)->lineinfo) ? (f)->lineinfo[pc] : -1)
+// #define getfuncline(f,pc)	(((f)->lineinfo) ? (f)->lineinfo[pc] : -1)
 
 
 #define resethookcount(L)	(L->hookcount = L->basehookcount)
 #define resethookcount(L)	(L->hookcount = L->basehookcount)
 
 

+ 7 - 0
lua/src/ldebug.c

@@ -41,6 +41,13 @@
 static const char *funcnamefromcode (lua_State *L, CallInfo *ci,
 static const char *funcnamefromcode (lua_State *L, CallInfo *ci,
                                     const char **name);
                                     const char **name);
 
 
+static int getfuncline(Proto *p, int pc)	{
+  int tmp2 = -1;
+  if (p->lineinfo)
+    tmp2 = p->lineinfo[pc];
+  memcpy(&tmp2, &p->lineinfo[pc], sizeof(tmp2));
+  return tmp2;
+}
 
 
 static int currentpc (CallInfo *ci) {
 static int currentpc (CallInfo *ci) {
   lua_assert(isLua(ci));
   lua_assert(isLua(ci));

+ 2 - 2
lua/src/lundump.c

@@ -341,10 +341,10 @@ static void LoadDebug (LoadState *S, Proto *f) {
   int i, n;
   int i, n;
   n = LoadInt(S);
   n = LoadInt(S);
 #ifdef LUAT_USE_MEMORY_OPTIMIZATION_CODE_MMAP
 #ifdef LUAT_USE_MEMORY_OPTIMIZATION_CODE_MMAP
-  char* ptr = (char*)luat_vfs_mmap(((LoadF*)S->Z->data)->f);
+  uint8_t* ptr = (uint8_t*)luat_vfs_mmap(((LoadF*)S->Z->data)->f);
   int inst[1];
   int inst[1];
   if (ptr) {
   if (ptr) {
-	f->lineinfo = ptr + ptr_offset;
+	  f->lineinfo = (int*)(ptr + ptr_offset);
     for (size_t i = 0; i < n; i++)
     for (size_t i = 0; i < n; i++)
     {
     {
       LoadVector(S, &inst, 1);
       LoadVector(S, &inst, 1);