summaryrefslogtreecommitdiff
path: root/src/git
diff options
context:
space:
mode:
Diffstat (limited to 'src/git')
-rw-r--r--src/git/errors.h7
-rw-r--r--src/git/thread-utils.h15
2 files changed, 19 insertions, 3 deletions
diff --git a/src/git/errors.h b/src/git/errors.h
index 18eb2b8ad..37870a4c5 100644
--- a/src/git/errors.h
+++ b/src/git/errors.h
@@ -13,8 +13,15 @@
GIT_BEGIN_DECL
/** The git errno. */
+#if defined(GIT_TLS)
GIT_EXTERN(int) GIT_TLS git_errno;
+#elif defined(GIT_HAS_PTHREAD)
+# define git_errno (*git__errno_storage())
+GIT_EXTERN(int *) git__errno_storage(void);
+
+#endif
+
/**
* strerror() for the Git library
* @param num The error code to explain
diff --git a/src/git/thread-utils.h b/src/git/thread-utils.h
index c14aa17cb..8baf75bed 100644
--- a/src/git/thread-utils.h
+++ b/src/git/thread-utils.h
@@ -9,8 +9,15 @@
#define GIT_HAS_TLS 1
-#if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) || \
- defined(__xlc__) || defined(__xlC__)
+#if defined(__APPLE__) && defined(__MACH__)
+# undef GIT_TLS
+# define GIT_HAS_PTHREAD
+
+#elif defined(__GNUC__) || \
+ defined(__SUNPRO_C) || \
+ defined(__SUNPRO_CC) || \
+ defined(__xlc__) || \
+ defined(__xlC__)
# define GIT_TLS __thread
#elif defined(__INTEL_COMPILER)
@@ -20,7 +27,9 @@
# define GIT_TLS __thread
# endif
-#elif defined(_WIN32) || defined(_WIN32_CE) || defined(__BORLANDC__)
+#elif defined(_WIN32) || \
+ defined(_WIN32_CE) || \
+ defined(__BORLANDC__)
# define GIT_TLS __declspec(thread)
#else