aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/compilers.py')
-rw-r--r--mesonbuild/compilers.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 8dee468..e9a798d 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -596,6 +596,10 @@ int temparray[%d-sizeof(%s)];
for i in range(1, 1024):
code = templ % (prefix, i, element)
if self.compiles(code, extra_args):
+ if self.id == 'msvc':
+ # MSVC refuses to construct an array of zero size, so
+ # the test only succeeds when i is sizeof(element) + 1
+ return i - 1
return i
raise EnvironmentException('Cross checking sizeof overflowed.')
@@ -633,6 +637,10 @@ int testarray[%d-offsetof(struct tmp, target)];
for i in range(1, 1024):
code = templ % (typename, i)
if self.compiles(code, extra_args):
+ if self.id == 'msvc':
+ # MSVC refuses to construct an array of zero size, so
+ # the test only succeeds when i is sizeof(element) + 1
+ return i - 1
return i
raise EnvironmentException('Cross checking offsetof overflowed.')