Skip to content

Fix construction from empty arrays in debug modes#57

Merged
martinmoene merged 1 commit intononstd-lite:masterfrom
mjacobse:master
Jun 12, 2020
Merged

Fix construction from empty arrays in debug modes#57
martinmoene merged 1 commit intononstd-lite:masterfrom
mjacobse:master

Conversation

@mjacobse
Copy link
Copy Markdown
Contributor

I had issues when constructing spans from std::arrays with size 0 in Visual Studio. In Debug builds it has its container debugging mode for the standard library enabled (_CONTAINER_DEBUG_LEVEL > 0) and breaks on an assertion error when operator[] is called with 0. I then tried the stdlibc++ debug mode (-D_GLIBCXX_DEBUG) and it shows the same problem. I guess that technically &arr[0] is not a bug, but practically it can become a problem with these debug modes. I couldn't think of a disadvantage of using .data(), so I propose to use that instead.

Use .data() instead of &arr[0] to get the array pointer. This avoids
calling operator[] with 0, which causes assertions in some debug modes
to fail. For example when using -D_GLIBCXX_DEBUG for the libstdc++ debug
mode. In Visual Studio, a similar debug mode is even the default for
Debug builds, so this problem can occur quite easily.
@martinmoene martinmoene merged commit c28d3e4 into nonstd-lite:master Jun 12, 2020
@martinmoene
Copy link
Copy Markdown
Collaborator

Thanks @mjacobse !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants