[SHELL/EXPERIMENTS]

* Create a branch for some evul shell experiments.

svn path=/branches/shell-experiments/; revision=61927
This commit is contained in:
Amine Khaldi
2014-02-02 19:37:27 +00:00
parent d09f611410
commit 527f2f9057
20177 changed files with 0 additions and 1312061 deletions
+48
View 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 ([email protected])
*/
#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;
}
}
}