From f4bc74ac4954328b25e961e7afb7337377084079 Mon Sep 17 00:00:00 2001 From: David Seifert Date: Sat, 31 Dec 2016 18:21:18 +0200 Subject: [PATCH] Fix compiling in C++14 mode * Left shifting a negative signed is undefined behaviour * Fix incorrect printf() specifiers found with -Wformat --- source/core/NstCore.hpp | 4 ++-- source/unix/gtkui/gtkui.cpp | 2 +- source/unix/gtkui/gtkui.h | 1 - source/unix/gtkui/gtkui_cheats.cpp | 8 ++++---- source/unix/video.cpp | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/source/core/NstCore.hpp b/source/core/NstCore.hpp index 50e20f6..420cc4a 100644 --- a/source/core/NstCore.hpp +++ b/source/core/NstCore.hpp @@ -279,14 +279,14 @@ namespace Nes template inline long signed_shl(T v,uint c) { - enum {NATIVE = T(-7) << 1 == -14}; + enum {NATIVE = -(T(7) << 1) == -14}; return Helper::ShiftSigned::Left( v, c ); } template inline long signed_shr(T v,uint c) { - enum {NATIVE = T(-7) >> 1 == -4 || T(-7) >> 1 == -3}; + enum {NATIVE = -(T(7) >> 1) == -4 || -(T(7) >> 1) == -3}; return Helper::ShiftSigned::Right( v, c ); } diff --git a/source/unix/gtkui/gtkui.cpp b/source/unix/gtkui/gtkui.cpp index 3cfeeab..d4a5e2d 100644 --- a/source/unix/gtkui/gtkui.cpp +++ b/source/unix/gtkui/gtkui.cpp @@ -438,7 +438,7 @@ void gtkui_message(const char* message) { GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, - message); + "%s", message); gtk_dialog_run(GTK_DIALOG(messagewindow)); gtk_widget_destroy(messagewindow); } diff --git a/source/unix/gtkui/gtkui_cheats.cpp b/source/unix/gtkui/gtkui_cheats.cpp index afc01b0..e7b691a 100644 --- a/source/unix/gtkui/gtkui_cheats.cpp +++ b/source/unix/gtkui/gtkui_cheats.cpp @@ -373,7 +373,7 @@ void gtkui_cheats_fill_tree(char *filename) { else if (node.GetChild(L"address")) { // Raw char rawbuf[11]; snprintf(rawbuf, sizeof(rawbuf), - "%04x %02x %02x", + "%04lu %02lu %02lu", node.GetChild(L"address").GetUnsignedValue(), node.GetChild(L"value").GetUnsignedValue(), node.GetChild(L"compare").GetUnsignedValue()); @@ -545,13 +545,13 @@ gboolean gtkui_cheats_scan_list(GtkTreeModel *model, GtkTreePath *path, GtkTreeI int addr, value, compare; char buf[5]; - snprintf(buf, sizeof(buf), "%c%c%c%c\0", rawcode[0], rawcode[1], rawcode[2], rawcode[3]); + snprintf(buf, sizeof(buf), "%c%c%c%c", rawcode[0], rawcode[1], rawcode[2], rawcode[3]); sscanf(buf, "%x", &addr); - snprintf(buf, sizeof(buf), "%c%c\0", rawcode[5], rawcode[6]); + snprintf(buf, sizeof(buf), "%c%c", rawcode[5], rawcode[6]); sscanf(buf, "%x", &value); - snprintf(buf, sizeof(buf), "%c%c\0", rawcode[8], rawcode[9]); + snprintf(buf, sizeof(buf), "%c%c", rawcode[8], rawcode[9]); sscanf(buf, "%x", &compare); code.address = addr; diff --git a/source/unix/video.cpp b/source/unix/video.cpp index 3eff19d..c34bb22 100644 --- a/source/unix/video.cpp +++ b/source/unix/video.cpp @@ -757,7 +757,7 @@ void video_screenshot(const char* filename) { if (filename == NULL) { // Set the filename char sshotpath[512]; - snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%d-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100); + snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%ld-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100); // Save the file lodepng_encode32_file(sshotpath, (const unsigned char*)pixels, rendersize.w, rendersize.h);