mirror of
https://github.com/reactos/reactos.git
synced 2025-06-23 01:40:17 +00:00
[SHELL/EXPERIMENTS]
* Create a branch for some evul shell experiments. svn path=/branches/shell-experiments/; revision=61927
This commit is contained in:
parent
d09f611410
commit
527f2f9057
20177 changed files with 0 additions and 1312061 deletions
48
lib/sdk/cpprt/ehvec.cpp
Normal file
48
lib/sdk/cpprt/ehvec.cpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* PROJECT: ReactOS c++ runtime library
|
||||
* LICENSE: GPLv2+ - See COPYING in the top level directory
|
||||
* PURPOSE: Exception-handling vector ctor/dtor iterator implementation
|
||||
* PROGRAMMER: Thomas Faber (thomas.faber@reactos.org)
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
void __stdcall MSVCRTEX_eh_vector_constructor_iterator(void *pMem, size_t sizeOfItem, int nItems, void (__thiscall *ctor)(void *), void (__thiscall *dtor)(void *))
|
||||
{
|
||||
char *pEnd = static_cast<char *>(pMem) + nItems * sizeOfItem;
|
||||
for (char *pItem = static_cast<char *>(pMem);
|
||||
pItem < pEnd;
|
||||
pItem += sizeOfItem)
|
||||
{
|
||||
try
|
||||
{
|
||||
ctor(pItem);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
for (pItem -= sizeOfItem; pItem >= pMem; pItem -= sizeOfItem)
|
||||
dtor(pItem);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void __stdcall MSVCRTEX_eh_vector_destructor_iterator(void *pMem, size_t sizeOfItem, int nItems, void (__thiscall *dtor)(void *))
|
||||
{
|
||||
char *pEnd = static_cast<char *>(pMem) + nItems * sizeOfItem;
|
||||
for (char *pItem = pEnd - sizeOfItem;
|
||||
pItem >= pMem;
|
||||
pItem -= sizeOfItem)
|
||||
{
|
||||
try
|
||||
{
|
||||
dtor(pItem);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
for (pItem -= sizeOfItem; pItem >= pMem; pItem -= sizeOfItem)
|
||||
dtor(pItem);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue