Use LONG_MAX instead of __WORDSIZE to find size of long

__WORDSIZE isn't guaranteed to have any relation to the size of long,
compare LONG_MAX to INT64_MAX to find if int64_t* will be equivalent
to long*.

Bug: 190084016
Test: m USE_HOST_MUSL=true host-native
Change-Id: Ie50e78b92c1c72c9eaedbdc8267b7e382c40e96b
diff --git a/source/dng_safe_arithmetic.h b/source/dng_safe_arithmetic.h
index b229dc4..66c5ebf 100644
--- a/source/dng_safe_arithmetic.h
+++ b/source/dng_safe_arithmetic.h
@@ -20,6 +20,7 @@
 #ifndef __dng_safe_arithmetic__
 #define __dng_safe_arithmetic__
 
+#include <climits>
 #include <cstddef>
 #include <cstdint>
 #include <limits>
@@ -112,7 +113,7 @@
 #if __has_builtin(__builtin_smull_overflow)
 inline std::int64_t SafeInt64MultByClang(std::int64_t arg1, std::int64_t arg2) {
   std::int64_t result;
-#if (__WORDSIZE == 64) && !defined(__APPLE__)
+#if LONG_MAX == INT64_MAX
   if (__builtin_smull_overflow(arg1, arg2, &result)) {
 #else
   if (__builtin_smulll_overflow(arg1, arg2, &result)) {