Fix off by 1 error in DqnString::Expand()
This commit is contained in:
parent
dc22ba2a02
commit
0bc8a48dbd
25
build.bat
25
build.bat
@ -5,8 +5,29 @@
|
|||||||
set ProjectName=dqn_unit_test
|
set ProjectName=dqn_unit_test
|
||||||
set CompileEntryPoint=..\dqn_unit_test.cpp
|
set CompileEntryPoint=..\dqn_unit_test.cpp
|
||||||
|
|
||||||
REM Build tags file
|
REM Build tags file if you have ctags in path
|
||||||
ctags -R
|
where /q ctags
|
||||||
|
if %errorlevel%==0 (
|
||||||
|
REM When parsing a C++ member function definition (e.g. "className::function"),
|
||||||
|
REM ctags cannot determine whether the scope specifier is a class name or
|
||||||
|
REM a namespace specifier and always lists it as a class name in the scope
|
||||||
|
REM portion of the extension fields. Also, if a C++ function is defined outside
|
||||||
|
REM of the class declaration (the usual case), the access specification (i.e.
|
||||||
|
REM public, protected, or private) and implementation information (e.g. virtual,
|
||||||
|
REM pure virtual) contained in the function declaration are not known when the
|
||||||
|
REM tag is generated for the function definition. -c++-kinds=+p fixes that
|
||||||
|
|
||||||
|
REM The --fields=+iaS option:
|
||||||
|
REM a Access (or export) of class members
|
||||||
|
REM i Inheritance information
|
||||||
|
REM S Signature of routine (e.g. prototype or parameter list)
|
||||||
|
REM
|
||||||
|
REM The --extra=+q option:
|
||||||
|
REM By default, ctags only generates tags for separate identifiers found in
|
||||||
|
REM the source files. With --extras=+q option, then ctags will also generate
|
||||||
|
REM a second, class-qualified tag for each class member
|
||||||
|
ctags -R --c++-kinds=+p --fields=+iaS --extras=+q
|
||||||
|
)
|
||||||
|
|
||||||
REM Check if build tool is on path
|
REM Check if build tool is on path
|
||||||
REM >nul, 2>nul will remove the output text from the where command
|
REM >nul, 2>nul will remove the output text from the where command
|
||||||
|
10
dqn.h
10
dqn.h
@ -775,9 +775,9 @@ struct DqnAllocatorMetadata
|
|||||||
isize *PtrToAllocAmount (u8 const *ptr) const;
|
isize *PtrToAllocAmount (u8 const *ptr) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
u32 boundsGuardSize; // sizeof(GUARD_VALUE) OR 0 if BoundsGuard is disabled.
|
u32 boundsGuardSize; // sizeof(GUARD_VALUE) OR 0 if BoundsGuard is disabled.
|
||||||
u32 allocHeadSize; // Bounds Guard Size + Offset To Src Size + Alloc Amount Size
|
u32 allocHeadSize; // Bounds Guard Size + Offset To Src Size + Alloc Amount Size
|
||||||
u32 allocTailSize; // Bounds Guard Size
|
u32 allocTailSize; // Bounds Guard Size
|
||||||
};
|
};
|
||||||
|
|
||||||
// #DqnMemStack API
|
// #DqnMemStack API
|
||||||
@ -1099,7 +1099,7 @@ T *DqnArray<T>::Insert(T const item, isize index)
|
|||||||
this->data[index] = item;
|
this->data[index] = item;
|
||||||
T *result = this->data + index;
|
T *result = this->data + index;
|
||||||
|
|
||||||
DQN_ASSERT(this->count < this->max);
|
DQN_ASSERT(this->count <= this->max);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6395,7 +6395,7 @@ bool DqnString::Expand(i32 newMax)
|
|||||||
usize allocSize = sizeof(*(this->str)) * (newMax + 1);
|
usize allocSize = sizeof(*(this->str)) * (newMax + 1);
|
||||||
char *result = nullptr;
|
char *result = nullptr;
|
||||||
|
|
||||||
if (this->str) result = (char *)this->memAPI->Realloc(this->str, this->max, allocSize);
|
if (this->str) result = (char *)this->memAPI->Realloc(this->str, (this->max + 1), allocSize);
|
||||||
else result = (char *)this->memAPI->Alloc(allocSize, Dqn::ZeroClear::False);
|
else result = (char *)this->memAPI->Alloc(allocSize, Dqn::ZeroClear::False);
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
|
Loading…
Reference in New Issue
Block a user