\r
#define malloc(n) AllocatePool(n)\r
#define calloc(n,s) AllocateZeroPool((n)*(s))\r
-#define free(p) FreePool(p)\r
+\r
+#define free(p) \\r
+ do { \\r
+ VOID *EvalOnce; \\r
+ \\r
+ EvalOnce = (p); \\r
+ if (EvalOnce != NULL) { \\r
+ FreePool (EvalOnce); \\r
+ } \\r
+ } while (FALSE)\r
+\r
#define realloc(OldPtr,NewSize,OldSize) ReallocatePool(OldSize,NewSize,OldPtr)\r
#define xmemmove(Dest,Src,Length) CopyMem(Dest,Src,Length)\r
#define xmemcpy(Dest,Src,Length) CopyMem(Dest,Src,Length)\r
\r
int OnigStrCmp (char* Str1, char* Str2);\r
\r
-int sprintf_s (char *str, size_t sizeOfBuffer, char const *fmt, ...);\r
+int EFIAPI sprintf_s (char *str, size_t sizeOfBuffer, char const *fmt, ...);\r
\r
#define exit(n) ASSERT(FALSE);\r
\r