tapio / rlutil

C and C++ utilities for cross-platform console roguelike game creation.
http://tapio.github.com/rlutil/
229 stars 42 forks source link

`setConsoleTitle` strings #50

Open MangaD opened 8 years ago

MangaD commented 8 years ago

There is a problem with the setConsoleTitle function. It uses const char * as string parameter for the print function when compiling with C++. This seems to be a problem because when compiling with clang++ and with the flag -fsanitizer=memory, I just get a warning about uninitialized value at the line: RLUTIL_PRINT(true_title);

So, I'd advise to change the code of that function to:

RLUTIL_INLINE void setConsoleTitle(RLUTIL_STRING_T title) {
#if defined(_WIN32) && !defined(RLUTIL_USE_ANSI)
#ifdef __cplusplus
    SetConsoleTitleA(title.c_str());
#else
    SetConsoleTitleA(title);
#endif
#else
    RLUTIL_PRINT(ANSI_CONSOLE_TITLE_PRE);
    RLUTIL_PRINT(title);
    RLUTIL_PRINT(ANSI_CONSOLE_TITLE_POST);
#endif // defined(_WIN32) && !defined(RLUTIL_USE_ANSI)
}
nabijaczleweli commented 8 years ago

Looks :+1: if it's not a false positive. Submit a PR.

MangaD commented 8 years ago

I just checked and I think it is a false positive, sorry.

nabijaczleweli commented 8 years ago

It did seem to be :P

refi64 commented 8 years ago

@MangaD It could be that whatever you're passing as title has uninitialized bytes or something.

MangaD commented 8 years ago

@kirbyfan64 I am inclined to believe that it is related with libstdc++ not being compiled with memory sanitizer, not sure though.