From c46be6db32872bfd7c4010b43526b5e6bc0fa6a5 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 25 一月 2021 14:04:59 +0800
Subject: [PATCH] update

---
 src/bus_error.cpp |   36 ++++++++++++++++++++++++++----------
 1 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/bus_error.cpp b/src/bus_error.cpp
index cf16cf2..179211f 100644
--- a/src/bus_error.cpp
+++ b/src/bus_error.cpp
@@ -42,9 +42,8 @@
 char *
 bus_strerror(int err)
 {
-  int s, eindex;
+  int s;
   char *buf;
-  eindex = err - EBUS_BASE;
   /* Make first caller allocate key for thread-specific data */
 
   s = pthread_once(&once, createKey);
@@ -65,14 +64,31 @@
       err_exit(s, "pthread_setspecific");
   }
 
-  if (eindex < 0 || eindex >= _bus_nerr || _bus_errlist[eindex] == NULL)
-  {
-    snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", eindex);
-  }
-  else
-  {
-    strncpy(buf, _bus_errlist[eindex], MAX_ERROR_LEN - 1);
-    buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
+
+  if(err < EBUS_BASE) {
+    // libc閿欒
+    if (err < 0 || err >= _sys_nerr || _sys_errlist[err] == NULL)
+    {
+      snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
+    }
+    else
+    {
+      strncpy(buf, _sys_errlist[err], MAX_ERROR_LEN - 1);
+      buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
+    }
+  } else {
+    //鑷畾涔夐敊璇�
+    err -= EBUS_BASE;
+    if (err < 0 || err >= _bus_nerr || _bus_errlist[err] == NULL)
+    {
+      snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
+    }
+    else
+    {
+      strncpy(buf, _bus_errlist[err], MAX_ERROR_LEN - 1);
+      buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
+    }
+
   }
 
   return buf;

--
Gitblit v1.8.0