On 01/15/15 04:19, Jakub Jelinek wrote:
Hi!

With the addition of build libcpp, my build failed because of distro default
flags of -Werror=format-security.

The first hunk is I think no big deal, making it const makes the warning
go away.

The second hunk is more controversial, as even making message const doesn't
help with the warning.  There is another option of using "%s" and
_( instead of N_ in message, or just keep it as is and I can keep the second
hunk as local hack.

Thoughts on this?

2015-01-15  Jakub Jelinek  <ja...@redhat.com>

        * macro.c (create_iso_definition): Make paste_op_error_msg var
        const.
        * expr.c (cpp_classify_number): Avoid -Wformat-security warning.
I'd go with the patch as-is.  Approved.

jeff

--- libcpp/macro.c.jj   2015-01-14 11:01:34.000000000 +0100
+++ libcpp/macro.c      2015-01-14 14:22:19.286949884 +0100
@@ -2947,7 +2947,7 @@ create_iso_definition (cpp_reader *pfile
    cpp_token *token;
    const cpp_token *ctoken;
    bool following_paste_op = false;
-  const char *paste_op_error_msg =
+  const char *const paste_op_error_msg =
      N_("'##' cannot appear at either end of a macro expansion");
    unsigned int num_extra_tokens = 0;

--- libcpp/expr.c.jj    2015-01-14 11:01:34.000000000 +0100
+++ libcpp/expr.c       2015-01-14 14:35:52.851002344 +0100
@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
        if ((result & CPP_N_WIDTH) == CPP_N_LARGE
          && CPP_OPTION (pfile, cpp_warn_long_long))
          {
-          const char *message = CPP_OPTION (pfile, cplusplus)
-                               ? N_("use of C++11 long long integer constant")
-                               : N_("use of C99 long long integer constant");
-
          if (CPP_OPTION (pfile, c99))
              cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
-                                  0, message);
+                                  0, CPP_OPTION (pfile, cplusplus)
+                                     ? "use of C++11 long long integer 
constant"
+                                     : "use of C99 long long integer 
constant");
            else
              cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
-                                     virtual_location, 0, message);
+                                     virtual_location, 0,
+                                     CPP_OPTION (pfile, cplusplus)
+                                     ? "use of C++11 long long integer 
constant"
+                                     : "use of C99 long long integer 
constant");
          }

        result |= CPP_N_INTEGER;


        Jakub


Reply via email to