diff --git a/src/yaml_private.h b/src/yaml_private.h
index 6e7641e597c9feca164ba4d2d84fd4d003f59d9a_c3JjL3lhbWxfcHJpdmF0ZS5o..12246cbd6fc8eacda5028588ba563f1222553b4e_c3JjL3lhbWxfcHJpdmF0ZS5o 100644
--- a/src/yaml_private.h
+++ b/src/yaml_private.h
@@ -9,4 +9,8 @@
 #include <stddef.h>
 
 #ifndef _MSC_VER
+#if defined(__sun) || defined(__sun__)
+#include <sys/inttypes.h>
+#define PTRDIFF_MAX INT_MAX
+#else
 #include <stdint.h>
@@ -12,8 +16,8 @@
 #include <stdint.h>
-#ifndef PTRDIFF_MAX /* gcc on HP-UX sucks */
+#ifndef PTRDIFF_MAX /* gcc on HP-UX */
 #ifdef _LP64
 #define PTRDIFF_MAX 0x7FFFFFFFFFFFFFFFLL
 #else
 #define PTRDIFF_MAX 0x7FFFFFFFL
 #endif
 #endif
@@ -14,9 +18,10 @@
 #ifdef _LP64
 #define PTRDIFF_MAX 0x7FFFFFFFFFFFFFFFLL
 #else
 #define PTRDIFF_MAX 0x7FFFFFFFL
 #endif
 #endif
+#endif
 #else
 #ifdef _WIN64
 #define PTRDIFF_MAX _I64_MAX