Beispiel #1
0
struct PE_get_imports_info* PE_get_imports_info_deep_copy(struct PE_get_imports_info *i)
{
	struct PE_get_imports_info *rt;

	rt=DMEMDUP (i, sizeof(struct PE_get_imports_info), "struct PE_get_imports_info");
	
	for (int d=0; d < rt->import_descriptors_t; d++)
	{
		struct PE_get_imports_DLL_info* DLL_d=rt->dlls + d;
		struct PE_get_imports_DLL_info* DLL_s=i->dlls + d;

		DLL_d->DLL_name=DSTRDUP (DLL_s->DLL_name, "char*");
		DLL_d->symbols_t=DLL_s->symbols_t;
		DLL_d->symbols=DCALLOC(char*, DLL_s->symbols_t, "char*");

		for (int s=0; s<DLL_d->symbols_t; s++)
		{
			DLL_d->symbols[s]=DSTRDUP(DLL_s->symbols[s], "char*");
			DLL_d->hints[s]=DLL_s->hints[s]; // can be optimized;
		};
		DLL_d->allocate_thunks=DLL_s->allocate_thunks;
	};

	return rt;
};
Beispiel #2
0
static void* value_copier(void *v)
{
	return DMEMDUP (v, sizeof(MemoryCacheElement), "MemoryCacheElement");
};