Revise when the sqlite3ErrName() function is defined.
FossilOrigin-Name: 9e593fb3dbc58e86f499ba4399530e3e760eb84d
diff --git a/src/main.c b/src/main.c
index 27a0fe5..ff5a106 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1206,7 +1206,7 @@
** Return a static string containing the name corresponding to the error code
** specified in the argument.
*/
-#if defined(SQLITE_DEBUG) || defined(SQLITE_HAVE_OS_TRACE)
+#if defined(SQLITE_NEED_ERR_NAME)
const char *sqlite3ErrName(int rc){
const char *zName = 0;
int i, origRc = rc;
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 56fd2e1..5a393b2 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -376,6 +376,19 @@
#endif
/*
+** Is the sqlite3ErrName() function needed in the build? Currently,
+** it is needed by "mutex_w32.c" (when debugging), "os_win.c" (when
+** OSTRACE is enabled), and by several "test*.c" files (which are
+** compiled using SQLITE_TEST).
+*/
+#if defined(SQLITE_HAVE_OS_TRACE) || defined(SQLITE_TEST) || \
+ (defined(SQLITE_DEBUG) && SQLITE_OS_WIN)
+# define SQLITE_NEED_ERR_NAME
+#else
+# undef SQLITE_NEED_ERR_NAME
+#endif
+
+/*
** Return true (non-zero) if the input is an integer that is too large
** to fit in 32-bits. This macro is used inside of various testcase()
** macros to verify that we have tested SQLite for large-file support.
@@ -3506,7 +3519,7 @@
u8 sqlite3HexToInt(int h);
int sqlite3TwoPartName(Parse *, Token *, Token *, Token **);
-#if defined(SQLITE_DEBUG) || defined(SQLITE_HAVE_OS_TRACE)
+#if defined(SQLITE_NEED_ERR_NAME)
const char *sqlite3ErrName(int);
#endif