//\r
while (*CharInStr != 0 || *(CharInStr+1) != 0) { \r
if (*CharInStr == 0) {\r
- *NumberOfStrings += 1;\r
*Size += 1;\r
CharInStr++;\r
}\r
//\r
CharInStr += StrLen;\r
*Size += StrLen;\r
- \r
- }\r
-\r
- if (*NumberOfStrings > 0) {\r
*NumberOfStrings += 1;\r
}\r
+\r
//\r
// count ending two zeros.\r
//\r
} \r
}\r
\r
+ if (*StrStart == 0) {\r
+ StrStart ++;\r
+ TargetStrOffset ++;\r
+ }\r
+ \r
//\r
// Now we get the string target\r
//\r
//\r
// Copy smbios structure and optional strings.\r
//\r
- CopyMem (Raw, SmbiosEntry->RecordHeader + 1, sizeof(EFI_SMBIOS_TABLE_HEADER) + TargetStrOffset);\r
- CopyMem ((VOID*)((UINTN)Raw + sizeof(EFI_SMBIOS_TABLE_HEADER) + TargetStrOffset), String, InputStrLen + 1);\r
- AsciiStrCpy((CHAR8*)((UINTN)Raw + sizeof(EFI_SMBIOS_TABLE_HEADER) + TargetStrOffset + InputStrLen + 1), (CHAR8*)Record + Record->Length + TargetStrOffset + TargetStrLen + 1);\r
+ CopyMem (Raw, SmbiosEntry->RecordHeader + 1, Record->Length + TargetStrOffset);\r
+ CopyMem ((VOID*)((UINTN)Raw + Record->Length + TargetStrOffset), String, InputStrLen + 1);\r
+ CopyMem ((CHAR8*)((UINTN)Raw + Record->Length + TargetStrOffset + InputStrLen + 1),\r
+ (CHAR8*)Record + Record->Length + TargetStrOffset + TargetStrLen + 1,\r
+ SmbiosEntry->RecordHeader->RecordSize - sizeof (EFI_SMBIOS_RECORD_HEADER) - Record->Length - TargetStrOffset - TargetStrLen - 1);\r
\r
//\r
// Insert new record\r