r22177 by jghali -
scribus-commit
scribus-commit at lists.scribus.net
Mon Oct 2 18:32:18 UTC 2017
Author: jghali
Date: Mon Oct 2 18:32:17 2017
New Revision: 22177
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22177
Log:
backport fix for #15005 for compatibility with newer msvc versions
Modified:
branches/Version14x/Scribus/scribus/main_win32.cpp
Modified: branches/Version14x/Scribus/scribus/main_win32.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22177&path=/branches/Version14x/Scribus/scribus/main_win32.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/main_win32.cpp (original)
+++ branches/Version14x/Scribus/scribus/main_win32.cpp Mon Oct 2 18:32:17 2017
@@ -177,45 +177,45 @@
static QString exceptionDescription(DWORD exceptionCode)
{
QString description;
- if ( exceptionCode == EXCEPTION_ACCESS_VIOLATION )
+ if (exceptionCode == EXCEPTION_ACCESS_VIOLATION)
description = "EXCEPTION_ACCESS_VIOLATION";
- else if ( exceptionCode == EXCEPTION_DATATYPE_MISALIGNMENT )
+ else if (exceptionCode == EXCEPTION_DATATYPE_MISALIGNMENT)
description = "EXCEPTION_DATATYPE_MISALIGNMENT";
- else if ( exceptionCode == EXCEPTION_ARRAY_BOUNDS_EXCEEDED )
+ else if (exceptionCode == EXCEPTION_ARRAY_BOUNDS_EXCEEDED)
description = "EXCEPTION_ARRAY_BOUNDS_EXCEEDED";
- else if ( exceptionCode == EXCEPTION_FLT_DENORMAL_OPERAND )
+ else if (exceptionCode == EXCEPTION_FLT_DENORMAL_OPERAND)
description = "EXCEPTION_FLT_DENORMAL_OPERAND";
- else if ( exceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO )
+ else if (exceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO)
description = "EXCEPTION_FLT_DIVIDE_BY_ZERO";
- else if ( exceptionCode == EXCEPTION_FLT_INEXACT_RESULT )
+ else if (exceptionCode == EXCEPTION_FLT_INEXACT_RESULT)
description = "EXCEPTION_FLT_INEXACT_RESULT";
- else if ( exceptionCode == EXCEPTION_FLT_INVALID_OPERATION )
+ else if (exceptionCode == EXCEPTION_FLT_INVALID_OPERATION)
description = "EXCEPTION_FLT_INVALID_OPERATION";
- else if ( exceptionCode == EXCEPTION_FLT_OVERFLOW )
+ else if (exceptionCode == EXCEPTION_FLT_OVERFLOW)
description = "EXCEPTION_FLT_OVERFLOW";
- else if ( exceptionCode == EXCEPTION_FLT_STACK_CHECK )
+ else if (exceptionCode == EXCEPTION_FLT_STACK_CHECK)
description = "EXCEPTION_FLT_STACK_CHECK";
- else if ( exceptionCode == EXCEPTION_FLT_UNDERFLOW )
+ else if (exceptionCode == EXCEPTION_FLT_UNDERFLOW)
description = "EXCEPTION_FLT_UNDERFLOW";
- else if ( exceptionCode == EXCEPTION_GUARD_PAGE )
+ else if (exceptionCode == EXCEPTION_GUARD_PAGE)
description = "EXCEPTION_GUARD_PAGE";
- else if ( exceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION )
+ else if (exceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION)
description = "EXCEPTION_ILLEGAL_INSTRUCTION";
- else if ( exceptionCode == EXCEPTION_IN_PAGE_ERROR )
+ else if (exceptionCode == EXCEPTION_IN_PAGE_ERROR)
description = "EXCEPTION_IN_PAGE_ERROR";
- else if ( exceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO )
+ else if (exceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
description = "EXCEPTION_INT_DIVIDE_BY_ZERO";
- else if ( exceptionCode == EXCEPTION_INT_OVERFLOW )
+ else if (exceptionCode == EXCEPTION_INT_OVERFLOW)
description = "EXCEPTION_INT_OVERFLOW";
- else if ( exceptionCode == EXCEPTION_INVALID_DISPOSITION )
+ else if (exceptionCode == EXCEPTION_INVALID_DISPOSITION)
description = "EXCEPTION_INVALID_DISPOSITION";
- else if ( exceptionCode == EXCEPTION_INVALID_HANDLE )
+ else if (exceptionCode == EXCEPTION_INVALID_HANDLE)
description = "EXCEPTION_INVALID_HANDLE";
- else if ( exceptionCode == EXCEPTION_NONCONTINUABLE_EXCEPTION )
+ else if (exceptionCode == EXCEPTION_NONCONTINUABLE_EXCEPTION)
description = "EXCEPTION_NONCONTINUABLE_EXCEPTION";
- else if ( exceptionCode == EXCEPTION_PRIV_INSTRUCTION )
+ else if (exceptionCode == EXCEPTION_PRIV_INSTRUCTION)
description = "EXCEPTION_PRIV_INSTRUCTION";
- else if ( exceptionCode == EXCEPTION_STACK_OVERFLOW )
+ else if (exceptionCode == EXCEPTION_STACK_OVERFLOW)
description = "EXCEPTION_STACK_OVERFLOW";
else
description = "UNKNOWN EXCEPTION";
@@ -251,7 +251,7 @@
void messageHandler( QtMsgType type, const char *msg )
{
cerr << msg << endl;
- if( type == QtFatalMsg )
+ if (type == QtFatalMsg)
{
if (ScribusQApp::useGUI)
{
@@ -269,10 +269,10 @@
bool consoleOptionEnabled(int argc, char* argv[])
{
bool value = false;
- for( int i = 0; i < argc; i++ )
- {
- if( strcmp(argv[i], ARG_CONSOLE) == 0 ||
- strcmp(argv[i], ARG_CONSOLE_SHORT) == 0 )
+ for (int i = 0; i < argc; i++)
+ {
+ if (strcmp(argv[i], ARG_CONSOLE) == 0 ||
+ strcmp(argv[i], ARG_CONSOLE_SHORT) == 0)
{
value = true;
break;
@@ -286,33 +286,69 @@
int hConHandle;
HANDLE lStdHandle;
CONSOLE_SCREEN_BUFFER_INFO coninfo;
- FILE *fp;
+
+ freopen("NUL", "r", stdin);
+ freopen("NUL", "w", stdout);
+ freopen("NUL", "w", stderr);
// allocate console
- if( GetStdHandle(STD_OUTPUT_HANDLE) != INVALID_HANDLE_VALUE )
+ if (GetStdHandle(STD_OUTPUT_HANDLE) != INVALID_HANDLE_VALUE)
AllocConsole();
+
// set the screen buffer to be big enough to let us scroll text
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
coninfo.dwSize.Y = MAX_LINES;
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
+
+ // redirect unbuffered STDIN to the console
+ lStdHandle = GetStdHandle(STD_INPUT_HANDLE);
+ if (lStdHandle != INVALID_HANDLE_VALUE)
+ {
+ hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
+ if (hConHandle != -1)
+ {
+ _dup2(hConHandle, fileno(stdin));
+ setvbuf(stdin, NULL, _IONBF, 0);
+ SetStdHandle(STD_INPUT_HANDLE, (HANDLE) _get_osfhandle(fileno(stdin)));
+ _close(hConHandle);
+ }
+ }
+
//redirect unbuffered STDOUT to the console
lStdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
- hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "w" );
- *stdout = *fp;
- setvbuf( stdout, NULL, _IONBF, 0 );
- // redirect unbuffered STDIN to the console
- lStdHandle = GetStdHandle(STD_INPUT_HANDLE);
- hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "r" );
- *stdin = *fp;
- setvbuf( stdin, NULL, _IONBF, 0 );
+ if (lStdHandle != INVALID_HANDLE_VALUE)
+ {
+ hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
+ if (hConHandle != -1)
+ {
+ _dup2(hConHandle, fileno(stdout));
+ setvbuf(stdout, NULL, _IONBF, 0);
+ SetStdHandle(STD_OUTPUT_HANDLE, (HANDLE) _get_osfhandle(fileno(stdout)));
+ _close(hConHandle);
+ }
+ }
+
// redirect unbuffered STDERR to the console
lStdHandle = GetStdHandle(STD_ERROR_HANDLE);
- hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "w" );
- *stderr = *fp;
- setvbuf( stderr, NULL, _IONBF, 0 );
+ if (lStdHandle != INVALID_HANDLE_VALUE)
+ {
+ hConHandle = _open_osfhandle((intptr_t) lStdHandle, _O_TEXT);
+ if (hConHandle != -1)
+ {
+ _dup2(hConHandle, fileno(stderr));
+ setvbuf(stderr, NULL, _IONBF, 0);
+ SetStdHandle(STD_ERROR_HANDLE, (HANDLE) _get_osfhandle(fileno(stderr)));
+ _close(hConHandle);
+ }
+ }
+
+ std::wcout.clear();
+ std::cout.clear();
+ std::wcerr.clear();
+ std::cerr.clear();
+ std::wcin.clear();
+ std::cin.clear();
+
// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
// point to console as well
ios::sync_with_stdio();
More information about the scribus-commit
mailing list