[tracker: 2/5] libtracker-data: Solve signed vs unsigned pointer compiler warnings




commit 0a18f05c226aad733090adad3ac5b0bcabdcc736
Author: Daniele Nicolodi <daniele grinta net>
Date:   Thu May 6 13:35:32 2021 +0200

    libtracker-data: Solve signed vs unsigned pointer compiler warnings
    
    sqlite3_value_text() and sqlite3_column_text() return types are 'const
    unsigned char *' however GLib string functions take 'const
    gchar *' (aka 'const char *') arguments. This results in warnings
    about the conversion between pointers of different size.
    
    The most effective way to solve the problem is to have trivial macro
    wrappers around these function that cast the return types to the
    expected ones. Unfortunately there is not a header file where it makes
    sense to place these macros without having them defined in places
    where they may be unwanted. Adding one more header file only for these
    seems too much, simply copy them where needed.

 src/libtracker-data/tracker-db-interface-sqlite.c | 3 +++
 src/libtracker-data/tracker-vtab-service.c        | 4 ++++
 src/libtracker-data/tracker-vtab-triples.c        | 4 ++++
 3 files changed, 11 insertions(+)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 5adac80be..8e97f37f0 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -59,6 +59,9 @@
 #include "tracker-vtab-service.h"
 #include "tracker-vtab-triples.h"
 
+/* Avoid casts everywhere. */
+#define sqlite3_value_text(x) ((const gchar *) sqlite3_value_text(x))
+
 typedef struct {
        TrackerDBStatement *head;
        TrackerDBStatement *tail;
diff --git a/src/libtracker-data/tracker-vtab-service.c b/src/libtracker-data/tracker-vtab-service.c
index 469f05f4d..77e8d7c4b 100644
--- a/src/libtracker-data/tracker-vtab-service.c
+++ b/src/libtracker-data/tracker-vtab-service.c
@@ -33,6 +33,10 @@
 #define COL_FIRST_PARAMETER COL_LAST
 #define COL_FIRST_VARIABLE (COL_LAST + (N_PARAMETERS * 2))
 
+/* Avoid casts everywhere. */
+#define sqlite3_value_text(x) ((const gchar *) sqlite3_value_text(x))
+#define sqlite3_column_text(x, y) ((const gchar *) sqlite3_column_text(x, y))
+
 typedef struct {
        sqlite3 *db;
        TrackerDataManager *data_manager;
diff --git a/src/libtracker-data/tracker-vtab-triples.c b/src/libtracker-data/tracker-vtab-triples.c
index c9a0a2f40..1ef067a68 100644
--- a/src/libtracker-data/tracker-vtab-triples.c
+++ b/src/libtracker-data/tracker-vtab-triples.c
@@ -23,6 +23,10 @@
 #include "tracker-ontologies.h"
 #include "tracker-vtab-triples.h"
 
+/* Avoid casts everywhere. */
+#define sqlite3_value_text(x) ((const gchar *) sqlite3_value_text(x))
+#define sqlite3_column_text(x, y) ((const gchar *) sqlite3_column_text(x, y))
+
 /* Define some constraints for older SQLite, we will never get
  * those in older versions, and simplifies checks in code.
  */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]