diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-06-02 13:59:33 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-06-02 13:59:33 +0200 |
| commit | 7afcf656bd25e2ed6b33bae1cbbc4a62d66e1938 (patch) | |
| tree | fdc2fadd0713b6b4ef63d8134817dfad326d83cd /src/helpers/MiscFunctions.cpp | |
| parent | 9acf15efd7268406bffdf9141b31851a06007e24 (diff) | |
Added hyprctl devices
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
| -rw-r--r-- | src/helpers/MiscFunctions.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp index 6c53b8f2..7a947832 100644 --- a/src/helpers/MiscFunctions.cpp +++ b/src/helpers/MiscFunctions.cpp @@ -46,16 +46,35 @@ void wlr_signal_emit_safe(struct wl_signal *signal, void *data) { } std::string getFormat(const char *fmt, ...) { - char buf[2048] = ""; + char buf[LOGMESSAGESIZE] = ""; + char* outputStr; + int logLen; va_list args; va_start(args, fmt); + logLen = vsnprintf(buf, sizeof buf, fmt, args); + va_end(args); - vsprintf(buf, fmt, args); + if ((long unsigned int)logLen < sizeof buf) { + outputStr = strdup(buf); + } else { + outputStr = (char*)malloc(logLen + 1); - va_end(args); + if (!outputStr) { + printf("CRITICAL: Cannot alloc size %d for log! (Out of memory?)", logLen + 1); + return ""; + } + + va_start(args, fmt); + vsnprintf(outputStr, logLen + 1U, fmt, args); + va_end(args); + } + + std::string output = std::string(outputStr); + + free(outputStr); - return std::string(buf); + return output; } void scaleBox(wlr_box* box, float scale) { |
