summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pugixml.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index cac51a5..d379a23 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -4521,7 +4521,14 @@ PUGI__NS_BEGIN
}
if (negative)
+ {
+ // Workaround for crayc++ CC-3059: Expected no overflow in routine.
+ #ifdef _CRAYC
+ return (overflow || result > minneg) ? ~minneg + 1 : ~result + 1;
+ #else
return (overflow || result > minneg) ? 0 - minneg : 0 - result;
+ #endif
+ }
else
return (overflow || result > maxpos) ? maxpos : result;
}