onetodo / cld2

Automatically exported from code.google.com/p/cld2
0 stars 0 forks source link

Build warning on Windows with clang #21

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
http://build.chromium.org/p/chromium.fyi/builders/Cr%20Win%20Clang/builds/108/st
eps/compile/logs/stdio

..\..\third_party\cld_2\src\internal\offsetmap.cc(82,43) :  warning(clang): 
format specifies type 'long' but the argument has type 'size_type' (aka 
'unsigned int') [-Wformat]
  fprintf(fout, "Offsetmap: %ld bytes\n", diffs_.size());
                            ~~~           ^~~~~~~~~~~~~
                            %u

There's no great portable way to printf size_t types. Since this is debugging 
code, I suggest this patch:

Nicos-MacBook-Pro:src thakis$ svn diff
Index: internal/offsetmap.cc
===================================================================
--- internal/offsetmap.cc   (revision 165)
+++ internal/offsetmap.cc   (working copy)
@@ -79,7 +79,8 @@
   }

   Flush();    // Make sure any pending entry gets printed
-  fprintf(fout, "Offsetmap: %ld bytes\n", diffs_.size());
+  fprintf(fout, "Offsetmap: %lu bytes\n",
+          static_cast<unsigned long>(diffs_.size()));
   for (int i = 0; i < static_cast<int>(diffs_.size()); ++i) {
     fprintf(fout, "%c%02d ", "&=+-"[OpPart(diffs_[i])], LenPart(diffs_[i]));
     if ((i % 20) == 19) {fprintf(fout, "\n");}

Can you land this, please?

Original issue reported on code.google.com by thakis@chromium.org on 18 Aug 2014 at 2:24

GoogleCodeExporter commented 9 years ago
Committed as r167. For consistency with the for-loop immediately following, I 
stuck with static_cast<int> and %d. This should fix your error, please confirm!

Index: offsetmap.cc
===================================================================
--- offsetmap.cc        (revision 166)
+++ offsetmap.cc        (working copy)
@@ -79,7 +79,7 @@
   }

   Flush();    // Make sure any pending entry gets printed
-  fprintf(fout, "Offsetmap: %ld bytes\n", diffs_.size());
+  fprintf(fout, "Offsetmap: %d bytes\n", static_cast<int>(diffs_.size()));
   for (int i = 0; i < static_cast<int>(diffs_.size()); ++i) {
     fprintf(fout, "%c%02d ", "&=+-"[OpPart(diffs_[i])], LenPart(diffs_[i]));
     if ((i % 20) == 19) {fprintf(fout, "\n");}

Original comment by andrewha...@google.com on 19 Aug 2014 at 9:18

GoogleCodeExporter commented 9 years ago
That was fast, thanks!

Original comment by thakis@chromium.org on 19 Aug 2014 at 3:21