Hello,

I'm doing an NMU of grande to fix #350290; diff attached.

Thanks,

Matej
diff -u grande-0.6/debian/changelog grande-0.6/debian/changelog
--- grande-0.6/debian/changelog
+++ grande-0.6/debian/changelog
@@ -1,3 +1,10 @@
+grande (0.6-7.1) unstable; urgency=medium
+
+  * NMU.
+  * src/load.c, src/ranking.c: Really fix scanf formats.  Closes: #350290.
+
+ -- Matej Vela <[EMAIL PROTECTED]>  Mon, 20 Feb 2006 15:13:44 +0100
+
 grande (0.6-7) unstable; urgency=low
 
   * debian/control: set policy to 3.6.2.1.
diff -u grande-0.6/src/load.c grande-0.6/src/load.c
--- grande-0.6/src/load.c
+++ grande-0.6/src/load.c
@@ -232,19 +232,18 @@
   Root->StageMax = 0;
   Root->EnemyCnt = 0;
   while(fgets(buff, 255, fp)) {
-    int d1, d2, d3, d4;
     if (buff[0] == ';' || buff[0] == '\n') continue;
     if (!Root->StageMax)
       StageDatas = (StageData *)KXL_Malloc(sizeof(StageData));
     else
       StageDatas = (StageData *)KXL_Realloc(StageDatas, sizeof(StageData) * 
(Root->StageMax + 1));
-    sscanf(buff,"%d %d %d %d %s %s", d1, d2, d3, d4,
+    sscanf(buff,"%"SCNu16" %"SCNu8" %"SCNu8" %"SCNu16" %s %s",
+           &(StageDatas[Root->StageMax].Time),
+           &(StageDatas[Root->StageMax].CreateNo),
+           &(StageDatas[Root->StageMax].Max),
+           &(StageDatas[Root->StageMax].Step),
            &(StageDatas[Root->StageMax].X[0]),
            &(StageDatas[Root->StageMax].Y[0]));
-    StageDatas[Root->StageMax].Time = d1;
-    StageDatas[Root->StageMax].CreateNo = d2;
-    StageDatas[Root->StageMax].Max = d3;
-    StageDatas[Root->StageMax].Step = d4;
     StageDatas[Root->StageMax].Flag = False;
     StageDatas[Root->StageMax ++].StepTime = 0;
   }
diff -u grande-0.6/src/ranking.c grande-0.6/src/ranking.c
--- grande-0.6/src/ranking.c
+++ grande-0.6/src/ranking.c
@@ -42,17 +42,15 @@
 void ReadScore(void)
 {
   FILE *fp;
-  unsigned int d1, d2;
   Uint16 i;
 
   if ((fp = fopen(SCORE_PATH "/grande.scores", "r"))) {
-    fscanf(fp, "%d", &d1);
-    Root->HiScore = d1;
-    for (i = 0; i < 5; i ++) {
-      fscanf(fp, "%d %d %s", &d1, &d2, Ranking[i].Name);
-      Ranking[i].Score = d1;
-      Ranking[i].Stage = d2;
-    }
+    fscanf(fp, "%"SCNu32, &(Root->HiScore));
+    for (i = 0; i < 5; i ++)
+      fscanf(fp, "%"SCNu32" %"SCNu8" %s",
+             &(Ranking[i].Score),
+             &(Ranking[i].Stage),
+             Ranking[i].Name);
     fclose(fp);
   } else {
     Root->HiScore = 10000;
diff -u grande-0.6/src/grande.h grande-0.6/src/grande.h
--- grande-0.6/src/grande.h
+++ grande-0.6/src/grande.h
@@ -10,6 +10,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <inttypes.h>
 #include <sys/types.h>
 #include <unistd.h>
 #include <KXL.h>

Reply via email to