if (pidl) { int l = ILGetSize(pidl); _p = (ITEMIDLIST*) _malloc->Alloc(l); if (_p) memcpy(_p, pidl, l); } else _p = NULL;
_p = (ITEMIDLIST*) _malloc->Alloc(size+sizeof(USHORT));  if (_p) { memcpy(_p, pidl, size); ((ITEMIDLIST*)((LPBYTE)_p+size))->mkid.cb = 0; }
	void assign(LPCITEMIDLIST pidl)	{		//CONTEXT("ShellPath::assign(LPCITEMIDLIST)");		ITEMIDLIST* h = _p;		if (pidl) {			int l = ILGetSize(pidl);			_p = (ITEMIDLIST*) _malloc->Alloc(l);			if (_p) memcpy(_p, pidl, l);		} else			_p = NULL; 		_malloc->Free(h);	}