mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
Merge pull request #1002 from nogitsune-youkai/integer-overflow-assert
Fix: Add asserts to prevent undefined behavior on empty containers
This commit is contained in:
commit
f90750c066
1 changed files with 6 additions and 0 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
@ -74,6 +75,7 @@ namespace util {
|
||||||
}
|
}
|
||||||
|
|
||||||
void pop_back() noexcept {
|
void pop_back() noexcept {
|
||||||
|
assert(!empty() && "pop_back() called on empty stack_vector");
|
||||||
if (size_ > 0) {
|
if (size_ > 0) {
|
||||||
data_.ptr()[size_ - 1].~T();
|
data_.ptr()[size_ - 1].~T();
|
||||||
--size_;
|
--size_;
|
||||||
|
|
@ -110,18 +112,22 @@ namespace util {
|
||||||
}
|
}
|
||||||
|
|
||||||
T& front() {
|
T& front() {
|
||||||
|
assert(!empty() && "front() called on empty stack_vector");
|
||||||
return data_.ptr()[0];
|
return data_.ptr()[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
T& back() {
|
T& back() {
|
||||||
|
assert(!empty() && "back() called on empty stack_vector");
|
||||||
return data_.ptr()[size_ - 1];
|
return data_.ptr()[size_ - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
const T& front() const {
|
const T& front() const {
|
||||||
|
assert(!empty() && "front() called on empty stack_vector");
|
||||||
return data_.ptr()[0];
|
return data_.ptr()[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
const T& back() const {
|
const T& back() const {
|
||||||
|
assert(!empty() && "back() called on empty stack_vector");
|
||||||
return data_.ptr()[size_ - 1];
|
return data_.ptr()[size_ - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue