Huw Davies (@huw) commented about dlls/combase/roapi.c:
*out = NULL;
- /* search activation context first */
- data.cbSize = sizeof(data);
- if (FindActCtxSectionStringW(FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, NULL,
ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES, classid, &data))
- {
struct activatable_class_data *activatable_class = (struct activatable_class_data *)data.lpData;
void *ptr = (BYTE *)data.lpSectionBase + activatable_class->module_offset;
*out = wcsdup(ptr);
This is allocating with malloc() while the other branch uses the process heap. It wouldn't be a bad idea to move the function over to malloc() first.