Browse Source

Fix the wide char bug in Android.

louyihua 8 years ago
parent
commit
003626441e
1 changed files with 12 additions and 0 deletions
  1. 12 0
      script.c

+ 12 - 0
script.c

@@ -562,7 +562,19 @@ PAL_AdditionalCredits(
    for (i = 0; i < 12; i++)
    {
       WCHAR buffer[48];
+#if defined(__ANDROID__)
+	  // The support of swprintf in Android's NDK is very very bad, so we need an alternative way.
+	  if (wcsncmp(rgszStrings[i], L"%ls", 3) == 0)
+	  {
+		  // We've limited the length of g_rcCredits[i] in text.c, so no need to double check here.
+		  wcscpy(buffer, gpGlobals->pszMsgName ? g_rcCredits[i] : rgszcps[i][gpGlobals->iCodePage]);
+		  wcscat(buffer, rgszStrings[i] + 3);
+	  }
+	  else
+		  wcscpy(buffer, rgszStrings[i]);
+#else
 	  swprintf(buffer, 48, rgszStrings[i], gpGlobals->pszMsgName ? g_rcCredits[i] : rgszcps[i][gpGlobals->iCodePage]);
+#endif
 	  PAL_DrawText(buffer, PAL_XY(0, 2 + i * 16), DESCTEXT_COLOR, TRUE, FALSE);
    }