From b08a962edb7c0fb3d7fb30dab4021258994e69b6 Mon Sep 17 00:00:00 2001 From: Michael Nickerson Date: Wed, 3 Aug 2022 20:32:38 -0400 Subject: [PATCH] Fix compile error on OpenBSD --- src/common.cpp | 10 ++++++++++ src/common.h | 1 + src/wcstringutil.h | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/src/common.cpp b/src/common.cpp index 8d405160a..5627862a5 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -648,6 +648,16 @@ void format_long_safe(wchar_t buff[64], long val) { } } +void format_llong_safe(wchar_t buff[64], long long val) { + unsigned long long uval = absolute_value(val); + if (val >= 0) { + format_safe_impl(buff, 64, uval); + } else { + buff[0] = '-'; + format_safe_impl(buff + 1, 63, uval); + } +} + void format_ullong_safe(wchar_t buff[64], unsigned long long val) { return format_safe_impl(buff, 64, val); } diff --git a/src/common.h b/src/common.h index e9b350ef5..e19cb4db9 100644 --- a/src/common.h +++ b/src/common.h @@ -329,6 +329,7 @@ void format_size_safe(char buff[128], unsigned long long sz); /// Writes out a long safely. void format_long_safe(char buff[64], long val); void format_long_safe(wchar_t buff[64], long val); +void format_llong_safe(wchar_t buff[64], long long val); void format_ullong_safe(wchar_t buff[64], unsigned long long val); /// "Narrows" a wide character string. This just grabs any ASCII characters and trunactes. diff --git a/src/wcstringutil.h b/src/wcstringutil.h index 0a88cd2a3..d3a8b5bd6 100644 --- a/src/wcstringutil.h +++ b/src/wcstringutil.h @@ -139,6 +139,12 @@ inline wcstring to_string(long x) { return wcstring(buff); } +inline wcstring to_string(long long x) { + wchar_t buff[64]; + format_llong_safe(buff, x); + return wcstring(buff); +} + inline wcstring to_string(unsigned long long x) { wchar_t buff[64]; format_ullong_safe(buff, x);