fix: explicitly define REFGUID from ::GUID&, not base::GUID (#30442) (#30500)

* fix: explicitly define REFGUID from ::GUID&

Ref: https://chromium-review.googlesource.com/c/chromium/src/+/3076480

* fix: duplicate GUID_NULL symbol, add comment
This commit is contained in:
Keeley Hammond
2021-08-11 15:07:59 -07:00
committed by GitHub
parent b6ffa799c5
commit 2745d70d25

View File

@@ -6,6 +6,17 @@
#define SHELL_COMMON_GIN_CONVERTERS_GUID_CONVERTER_H_
#if defined(OS_WIN)
// c.f.:
// https://chromium-review.googlesource.com/c/chromium/src/+/3076480
// REFGUID is currently incorrectly inheriting its type
// from base::GUID, when it should be inheriting from ::GUID.
// This workaround prevents build errors until the CL is merged
#ifdef _REFGUID_DEFINED
#undef REFGUID
#endif
#define REFGUID const ::GUID&
#define _REFGUID_DEFINED
#include <rpc.h>
#include "base/strings/sys_string_conversions.h"
@@ -17,7 +28,6 @@
#if defined(OS_WIN)
typedef GUID UUID;
const GUID GUID_NULL = {};
#else
typedef struct {
} UUID;
@@ -57,6 +67,7 @@ struct Converter<UUID> {
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, UUID val) {
#if defined(OS_WIN)
const GUID GUID_NULL = {};
if (val == GUID_NULL) {
return StringToV8(isolate, "");
} else {