From d1ae152f60908304729d42568f08f16e7bb183d5 Mon Sep 17 00:00:00 2001
From: Grazvydas Ignotas <notasas@gmail.com>
Date: Fri, 19 Jan 2018 00:59:40 +0200
Subject: [PATCH] Fix build on gcc6

Fixes build with mingw from ubuntu 17.10.
Missing C++17 features I guess.
---
 src/d3d11/d3d11_device.cpp        |  2 +-
 src/dxgi/dxgi_output.cpp          | 10 ++++++----
 tests/dxbc/test_dxbc_disasm.cpp   |  5 ++---
 tests/dxbc/test_hlsl_compiler.cpp |  1 +
 4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp
index aae90c82c..6e97acec6 100644
--- a/src/d3d11/d3d11_device.cpp
+++ b/src/d3d11/d3d11_device.cpp
@@ -1251,7 +1251,7 @@ namespace dxvk {
   
   
   HRESULT STDMETHODCALLTYPE D3D11Device::GetDeviceRemovedReason() {
-    static std::atomic<bool> s_errorShown = false;
+    static std::atomic<bool> s_errorShown = { false };
     
     if (!s_errorShown.exchange(true))
       Logger::warn("D3D11Device::GetDeviceRemovedReason: Stub");
diff --git a/src/dxgi/dxgi_output.cpp b/src/dxgi/dxgi_output.cpp
index da57e6de3..a2a26dc28 100644
--- a/src/dxgi/dxgi_output.cpp
+++ b/src/dxgi/dxgi_output.cpp
@@ -55,8 +55,9 @@ namespace dxvk {
     if (pDesc == nullptr)
       return DXGI_ERROR_INVALID_CALL;
     
-    ::MONITORINFOEX monInfo = { sizeof(monInfo) };
-    
+    ::MONITORINFOEX monInfo;
+
+    monInfo.cbSize = sizeof(monInfo);
     if (!::GetMonitorInfo(m_monitor, &monInfo)) {
       Logger::err("DxgiOutput: Failed to query monitor info");
       return E_FAIL;
@@ -82,8 +83,9 @@ namespace dxvk {
       return DXGI_ERROR_INVALID_CALL;
     
     // Query monitor info to get the device name
-    ::MONITORINFOEX monInfo = { sizeof(monInfo) };
-    
+    ::MONITORINFOEX monInfo;
+
+    monInfo.cbSize = sizeof(monInfo);
     if (!::GetMonitorInfo(m_monitor, &monInfo)) {
       Logger::err("DxgiOutput: Failed to query monitor info");
       return E_FAIL;
diff --git a/tests/dxbc/test_dxbc_disasm.cpp b/tests/dxbc/test_dxbc_disasm.cpp
index 40cbbbce8..57d621a88 100644
--- a/tests/dxbc/test_dxbc_disasm.cpp
+++ b/tests/dxbc/test_dxbc_disasm.cpp
@@ -1,5 +1,6 @@
 #include <cstring>
 #include <fstream>
+#include <vector>
 
 #include <d3dcompiler.h>
 
@@ -46,9 +47,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
     return 1;
   }
   
-  std::string data;
-  data.resize(assembly->GetBufferSize());
-  std::memcpy(data.data(), assembly->GetBufferPointer(), data.size());
+  std::string data((const char *)assembly->GetBufferPointer(), assembly->GetBufferSize());
   std::cout << data;
   return 0;
 }
diff --git a/tests/dxbc/test_hlsl_compiler.cpp b/tests/dxbc/test_hlsl_compiler.cpp
index 8b9a204c1..fc447e438 100644
--- a/tests/dxbc/test_hlsl_compiler.cpp
+++ b/tests/dxbc/test_hlsl_compiler.cpp
@@ -1,5 +1,6 @@
 #include <cstring>
 #include <fstream>
+#include <vector>
 
 #include <d3dcompiler.h>