Просмотр исходного кода

errno引发的sqlite问题修复

林振兴 4 лет назад
Родитель
Сommit
6a37b5ceb2
1 измененных файлов с 10 добавлено и 4 удалено
  1. 10 4
      components/lwp/lwp_syscall.c

+ 10 - 4
components/lwp/lwp_syscall.c

@@ -819,9 +819,11 @@ int sys_unlink(const char *pathname)
     ret = unlink(kname);
     ret = unlink(kname);
 
 
     kmem_put(kname);
     kmem_put(kname);
-    return ret;
+    return (ret < 0 ? GET_ERRNO() : ret);
 #else
 #else
-    return unlink(pathname);
+    int ret = 0;
+    ret = unlink(pathname);
+    return (ret < 0 ? GET_ERRNO() : ret);
 #endif
 #endif
 }
 }
 
 
@@ -928,7 +930,9 @@ int sys_exec(char *filename, int argc, char **argv, char **envp)
 
 
 int sys_kill(int pid, int sig)
 int sys_kill(int pid, int sig)
 {
 {
-    return lwp_kill(pid, sig);
+    int ret = 0;
+    ret = lwp_kill(pid, sig);
+    return (ret < 0 ? GET_ERRNO() : ret);
 }
 }
 
 
 int sys_getpid(void)
 int sys_getpid(void)
@@ -2303,7 +2307,9 @@ int sys_log(const char* log, int size)
 
 
 int sys_stat(const char *file, struct stat *buf)
 int sys_stat(const char *file, struct stat *buf)
 {
 {
-    return stat(file, buf);
+    int ret = 0;
+    ret = stat(file, buf);
+    return (ret < 0 ? GET_ERRNO() : ret);
 }
 }
 
 
 int sys_notimpl(void)
 int sys_notimpl(void)