summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-01-11 13:32:31 -0200
committerGravatar Yuri Kunde Schlesner2015-01-30 11:47:03 -0200
commitfc11aff9559da4725037c21f7a4732f5f009d975 (patch)
treef1034c4fd029f4e4867fe2b5b15352f87dbbd9b7 /src
parentAdditions to ResultVal to make it more convenient to use. (diff)
downloadyuzu-fc11aff9559da4725037c21f7a4732f5f009d975.tar.gz
yuzu-fc11aff9559da4725037c21f7a4732f5f009d975.tar.xz
yuzu-fc11aff9559da4725037c21f7a4732f5f009d975.zip
Common: Fix SCOPE_EXIT to actually create unique identifiers.
Diffstat (limited to 'src')
-rw-r--r--src/common/common_funcs.h4
-rw-r--r--src/common/scope_exit.h4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index c2750a63c..229eb74c9 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -31,6 +31,10 @@ template<> struct CompileTimeAssert<true> {};
31 31
32#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) 32#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
33 33
34/// Textually concatenates two tokens. The double-expansion is required by the C preprocessor.
35#define CONCAT2(x, y) DO_CONCAT2(x, y)
36#define DO_CONCAT2(x, y) x ## y
37
34#ifndef _MSC_VER 38#ifndef _MSC_VER
35 39
36#include <errno.h> 40#include <errno.h>
diff --git a/src/common/scope_exit.h b/src/common/scope_exit.h
index 263beaf0e..77dcbaa22 100644
--- a/src/common/scope_exit.h
+++ b/src/common/scope_exit.h
@@ -4,6 +4,8 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common_funcs.h"
8
7namespace detail { 9namespace detail {
8 template <typename Func> 10 template <typename Func>
9 struct ScopeExitHelper { 11 struct ScopeExitHelper {
@@ -34,4 +36,4 @@ namespace detail {
34 * } 36 * }
35 * \endcode 37 * \endcode
36 */ 38 */
37#define SCOPE_EXIT(body) auto scope_exit_helper_##__LINE__ = detail::ScopeExit([&]() body) 39#define SCOPE_EXIT(body) auto CONCAT2(scope_exit_helper_, __LINE__) = detail::ScopeExit([&]() body)