diff mbox series

[oe,meta-gnome] evince: Fix build with clang

Message ID 20191115204720.1294151-1-raj.khem@gmail.com
State Accepted
Commit 599304fb377187eb900261d4eda66de39abaf664
Headers show
Series [oe,meta-gnome] evince: Fix build with clang | expand

Commit Message

Khem Raj Nov. 15, 2019, 8:47 p.m. UTC
Enhance the patch for printf format checking to make clang work as well

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Andreas Müller <schnitzeltony@gmail.com>
---
 ...002-add-a-formatting-attribute-check.patch | 96 ++++++++++++++++++-
 1 file changed, 92 insertions(+), 4 deletions(-)

Comments

Andreas Müller Nov. 16, 2019, 10:21 a.m. UTC | #1
On Fri, Nov 15, 2019 at 9:47 PM Khem Raj <raj.khem@gmail.com> wrote:
>

> Enhance the patch for printf format checking to make clang work as well

Thanks for taking care - time to mention that you do a fantastic job :)

Hope I'll find some time to fix the other issues you reported during
this weekend.

Andreas
-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel
diff mbox series

Patch

diff --git a/meta-gnome/recipes-gnome/evince/evince/0002-add-a-formatting-attribute-check.patch b/meta-gnome/recipes-gnome/evince/evince/0002-add-a-formatting-attribute-check.patch
index e87da90bce..c374fc9430 100644
--- a/meta-gnome/recipes-gnome/evince/evince/0002-add-a-formatting-attribute-check.patch
+++ b/meta-gnome/recipes-gnome/evince/evince/0002-add-a-formatting-attribute-check.patch
@@ -19,16 +19,104 @@  Signed-off-by: Khem Raj <raj.khem@gmail.com>
  cut-n-paste/unarr/common/unarr.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/cut-n-paste/unarr/common/unarr.c b/cut-n-paste/unarr/common/unarr.c
-index 97ec92a..9e6e3ad 100644
 --- a/cut-n-paste/unarr/common/unarr.c
 +++ b/cut-n-paste/unarr/common/unarr.c
-@@ -92,7 +92,7 @@ size_t ar_get_global_comment(ar_archive *ar, void *buffer, size_t count)
+@@ -92,7 +92,7 @@ size_t ar_get_global_comment(ar_archive
      return ar->get_comment(ar, buffer, count);
  }
  
 -void ar_log(const char *prefix, const char *file, int line, const char *msg, ...)
-+void __attribute__((__format__ (__printf__, 4, 0))) ar_log(const char *prefix, const char *file, int line, const char *msg, ...)
++void __attribute__((__format__ (__printf__, 4, 5))) ar_log(const char *prefix, const char *file, int line, const char *msg, ...)
  {
      va_list args;
      va_start(args, msg);
+--- a/cut-n-paste/synctex/synctex_parser_utils.c
++++ b/cut-n-paste/synctex/synctex_parser_utils.c
+@@ -87,11 +87,11 @@ void _synctex_free(void * ptr) {
+ #   include <syslog.h>
+ #endif
+ 
+-int _synctex_error(const char * reason, ...) __attribute__((__format__ (__printf__, 1, 2)));
+-int _synctex_log(int level, const char * prompt, const char * reason, va_list arg) __attribute__((__format__ (__printf__, 3, 0)));
+-
+-int _synctex_log(int level, const char * prompt, const char * reason,va_list arg) {
++static int _synctex_log(int level, const char * prompt, const char * reason, ...) SYNCTEX_PRINTF_FORMAT(3, 0);
++static int _synctex_log(int level, const char * prompt, const char * reason, ...) {
++	va_list arg;
+ 	int result;
++	va_start(arg, reason);
+ #	ifdef SYNCTEX_RECENT_WINDOWS
+ 	{/*	This code is contributed by William Blum.
+         As it does not work on some older computers,
+@@ -133,10 +133,10 @@ int _synctex_log(int level, const char *
+     result += vfprintf(where, reason, arg);
+     result += fprintf(where,"\n");
+ #   endif
++    va_end(arg);
+ 	return result;
+ }
+ 
+-__attribute__((__format__ (__printf__, 1, 0)))
+ int _synctex_error(const char * reason,...) {
+     va_list arg;
+     int result;
+@@ -355,6 +355,7 @@ char * _synctex_merge_strings(const char
+ 		size_t len = strlen(temp);
+ 		if(UINT_MAX-len<size) {
+ 			_synctex_error("!  _synctex_merge_strings: Capacity exceeded.");
++			va_end(arg);
+ 			return NULL;
+ 		}
+ 		size+=len;
+@@ -374,6 +375,7 @@ char * _synctex_merge_strings(const char
+ 					if(dest != strncpy(dest,temp,size)) {
+ 						_synctex_error("!  _synctex_merge_strings: Copy problem");
+ 						free(result);
++						va_end(arg);
+ 						result = NULL;
+ 						return NULL;
+ 					}
+--- a/cut-n-paste/synctex/synctex_parser.c
++++ b/cut-n-paste/synctex/synctex_parser.c
+@@ -8411,6 +8411,7 @@ struct synctex_updater_t {
+     int length;             /*  the number of chars appended */
+ };
+ 
++static int _synctex_updater_print(synctex_updater_p updater, const char * format, ...) SYNCTEX_PRINTF_FORMAT(2, 3);
+ static int _synctex_updater_print(synctex_updater_p updater, const char * format, ...) {
+     int result = 0;
+     if (updater) {
+@@ -8447,6 +8448,7 @@ static int vasprintf(char **ret,
+ /**
+  *  gzvprintf is not available until OSX 10.10
+  */
++static int _synctex_updater_print_gz(synctex_updater_p updater, const char * format, ...) SYNCTEX_PRINTF_FORMAT(2, 3);
+ static int _synctex_updater_print_gz(synctex_updater_p updater, const char * format, ...) {
+     int result = 0;
+     if (updater) {
+--- a/cut-n-paste/synctex/synctex_parser_utils.h
++++ b/cut-n-paste/synctex/synctex_parser_utils.h
+@@ -85,7 +85,11 @@ extern "C" {
+ #	else
+ #		define SYNCTEX_ARE_PATH_CHARACTERS_EQUAL(left,right) (toupper(left) != toupper(right))
+ #	endif
+-    
++#	ifdef __GNUC__
++#		define SYNCTEX_PRINTF_FORMAT(si, ftc) __attribute__ ((format (printf, si, ftc)))
++#	else
++#		define SYNCTEX_PRINTF_FORMAT(si, ftc)
++#	endif    
+ /*  This custom malloc functions initializes to 0 the newly allocated memory.
+  *  There is no bzero function on windows. */
+ void *_synctex_malloc(size_t size);
+@@ -97,8 +101,8 @@ void _synctex_free(void * ptr);
+ /*  This is used to log some informational message to the standard error stream.
+  *  On Windows, the stderr stream is not exposed and another method is used.
+  *	The return value is the number of characters printed.	*/
+-    int _synctex_error(const char * reason,...);
+-    int _synctex_debug(const char * reason,...);
++    int _synctex_error(const char * reason,...) SYNCTEX_PRINTF_FORMAT(1, 2);
++    int _synctex_debug(const char * reason,...) SYNCTEX_PRINTF_FORMAT(1, 2);
+ 
+ /*  strip the last extension of the given string, this string is modified!
+  *  This function depends on the OS because the path separator may differ.