+ (*Captures)[Index].CapturePtr = AllocateCopyPool (\r
+ ((*Captures)[Index].Length) * sizeof (CHAR16),\r
+ (CHAR16*)((UINTN)String + Region->beg[Index])\r
+ );\r
+ if ((*Captures)[Index].CapturePtr == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ for (Index = 0; Index < *CapturesCount; ++Index) {\r
+ if ((*Captures)[Index].CapturePtr != NULL) {\r
+ FreePool ((CHAR16*)(*Captures)[Index].CapturePtr);\r
+ }\r
+ }\r
+ FreePool (*Captures);\r