Fix memory leak and undefined behavior in stb_alloc.cpp
This commit is contained in:
parent
6f670b6cd9
commit
7622aa74a6
@ -79,7 +79,7 @@ namespace util{
|
||||
constexpr deferred<T,Args...>::deferred(FArgs&&... args):
|
||||
m_args{std::forward<FArgs>(args)...}{}
|
||||
template<class T, class... Args>
|
||||
constexpr auto deferred<T,Args...>::value(void) -> deferred<T,Args...>::value_type{
|
||||
constexpr auto deferred<T,Args...>::value(void) -> value_type{
|
||||
return get_value_(std::make_index_sequence<sizeof...(Args)>());
|
||||
}
|
||||
template<class T, class... Args>
|
||||
@ -88,7 +88,7 @@ namespace util{
|
||||
}
|
||||
template<class T, class... Args>
|
||||
template<size_t... Is>
|
||||
constexpr auto deferred<T,Args...>::get_value_(std::index_sequence<Is...>) -> deferred<T,Args...>::value_type{
|
||||
constexpr auto deferred<T,Args...>::get_value_(std::index_sequence<Is...>) -> value_type{
|
||||
return T{std::get<Is>(m_args)...};
|
||||
}
|
||||
|
||||
|
||||
2
makefile
2
makefile
@ -130,7 +130,7 @@ else
|
||||
ifeq ($(MEMCHK),1)
|
||||
#use asan to check memory leaks/invalid accesses
|
||||
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||
COMPILER_FLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||
COMPILER_FLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls -DOUR_DICK_DISABLE_NOTHROW_ALLOCATE
|
||||
endif
|
||||
ifeq ($(UNDEFCHK),1)
|
||||
LDFLAGS+=-fsanitize=undefined
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/**
|
||||
This file is a part of our_dick
|
||||
Copyright (C) 2020 rexy712
|
||||
Copyright (C) 2020-2022 rexy712
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
@ -31,7 +31,11 @@ extern "C"{
|
||||
}
|
||||
void* our_dick_stb_realloc(void* data, size_t olds, size_t news){
|
||||
void* newdata = our_dick_stb_malloc(news);
|
||||
memcpy(newdata, data, olds);
|
||||
if(!newdata)
|
||||
return nullptr;
|
||||
if(data)
|
||||
memcpy(newdata, data, olds);
|
||||
our_dick_stb_free(data);
|
||||
return newdata;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/**
|
||||
This file is a part of our_dick
|
||||
Copyright (C) 2020 rexy712
|
||||
Copyright (C) 2020-2022 rexy712
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
@ -20,6 +20,7 @@
|
||||
#include <cstdlib> //malloc, free
|
||||
#include <new>
|
||||
|
||||
#ifndef OUR_DICK_DISABLE_NOTHROW_ALLOCATE
|
||||
void* operator new(size_t newsize){
|
||||
return std::malloc(newsize);
|
||||
}
|
||||
@ -37,3 +38,4 @@ void operator delete(void* ptr, std::align_val_t al)noexcept{
|
||||
void operator delete(void* ptr, size_t)noexcept{
|
||||
::operator delete(ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user