From a88d409c74ef1b4730bade4081b60d18480f4fe4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 30 Dec 2019 14:52:04 +0100 Subject: [PATCH] AK: Use stack buffers in String::number() to avoid some malloc() calls --- AK/String.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/AK/String.cpp b/AK/String.cpp index a085f75b48..2c011e279e 100644 --- a/AK/String.cpp +++ b/AK/String.cpp @@ -3,6 +3,10 @@ #include #include +#ifndef KERNEL +#include +#endif + #ifdef KERNEL extern "C" char* strstr(const char* haystack, const char* needle); #endif @@ -208,21 +212,28 @@ unsigned String::to_uint(bool& ok) const String String::number(u64 value) { + int size; + char buffer[32]; #ifdef __serenity__ - return String::format("%Q", value); + size = sprintf(buffer, "%llu", value); #else - return String::format("%llu", value); + size = sprintf(buffer, "%" PRIu64, value); #endif + return String(buffer, size); } String String::number(u32 value) { - return String::format("%u", value); + char buffer[32]; + int size = sprintf(buffer, "%u", value); + return String(buffer, size); } String String::number(i32 value) { - return String::format("%d", value); + char buffer[32]; + int size = sprintf(buffer, "%d", value); + return String(buffer, size); } String String::format(const char* fmt, ...) @@ -343,3 +354,4 @@ bool String::equals_ignoring_case(const StringView& other) const } } +