Use gchar when memory is allocated through GLib.
This commit is contained in:
Přemysl Eric Janouch 2022-06-05 13:29:38 +02:00
parent 024b5117b4
commit 4ca8825e02
Signed by: p
GPG Key ID: A0420B94F92B9493
10 changed files with 48 additions and 48 deletions

View File

@ -90,7 +90,7 @@ struct _FivBrowser {
static cairo_user_data_key_t fiv_browser_key_mtime_msec; static cairo_user_data_key_t fiv_browser_key_mtime_msec;
struct entry { struct entry {
char *uri; ///< GIO URI gchar *uri; ///< GIO URI
gint64 mtime_msec; ///< Modification time in milliseconds gint64 mtime_msec; ///< Modification time in milliseconds
cairo_surface_t *thumbnail; ///< Prescaled thumbnail cairo_surface_t *thumbnail; ///< Prescaled thumbnail
GIcon *icon; ///< If no thumbnail, use this icon GIcon *icon; ///< If no thumbnail, use this icon
@ -706,7 +706,7 @@ thumbnailers_start(FivBrowser *self)
typedef struct _OpenContext { typedef struct _OpenContext {
GWeakRef widget; GWeakRef widget;
GFile *file; GFile *file;
char *content_type; gchar *content_type;
GAppInfo *app_info; GAppInfo *app_info;
} OpenContext; } OpenContext;

View File

@ -115,7 +115,7 @@ const char *fiv_io_supported_media_types[] = {
NULL NULL
}; };
char ** gchar **
fiv_io_all_supported_media_types(void) fiv_io_all_supported_media_types(void)
{ {
GPtrArray *types = g_ptr_array_new(); GPtrArray *types = g_ptr_array_new();
@ -957,7 +957,7 @@ fail:
static cairo_surface_t * static cairo_surface_t *
open_wuffs_using(wuffs_base__image_decoder *(*allocate)(), open_wuffs_using(wuffs_base__image_decoder *(*allocate)(),
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
wuffs_base__image_decoder *dec = allocate(); wuffs_base__image_decoder *dec = allocate();
if (!dec) { if (!dec) {
@ -1135,7 +1135,7 @@ fail:
// --- JPEG -------------------------------------------------------------------- // --- JPEG --------------------------------------------------------------------
static GBytes * static GBytes *
parse_jpeg_metadata(cairo_surface_t *surface, const gchar *data, gsize len) parse_jpeg_metadata(cairo_surface_t *surface, const char *data, gsize len)
{ {
// Because the JPEG file format is simple, just do it manually. // Because the JPEG file format is simple, just do it manually.
// See: https://www.w3.org/Graphics/JPEG/itu-t81.pdf // See: https://www.w3.org/Graphics/JPEG/itu-t81.pdf
@ -1228,7 +1228,7 @@ parse_jpeg_metadata(cairo_surface_t *surface, const gchar *data, gsize len)
static void static void
load_jpeg_finalize(cairo_surface_t *surface, bool cmyk, load_jpeg_finalize(cairo_surface_t *surface, bool cmyk,
FivIoProfile destination, const gchar *data, size_t len) FivIoProfile destination, const char *data, size_t len)
{ {
GBytes *icc_profile = parse_jpeg_metadata(surface, data, len); GBytes *icc_profile = parse_jpeg_metadata(surface, data, len);
FivIoProfile source = NULL; FivIoProfile source = NULL;
@ -1250,7 +1250,7 @@ load_jpeg_finalize(cairo_surface_t *surface, bool cmyk,
static cairo_surface_t * static cairo_surface_t *
open_libjpeg_turbo( open_libjpeg_turbo(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
// Note that there doesn't seem to be much of a point in using this // Note that there doesn't seem to be much of a point in using this
// simplified API anymore, because JPEG-QS needs the original libjpeg API. // simplified API anymore, because JPEG-QS needs the original libjpeg API.
@ -1351,7 +1351,7 @@ libjpeg_error_exit(j_common_ptr cinfo)
static cairo_surface_t * static cairo_surface_t *
open_libjpeg_enhanced( open_libjpeg_enhanced(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
cairo_surface_t *volatile surface = NULL; cairo_surface_t *volatile surface = NULL;
@ -1613,7 +1613,7 @@ fail:
static cairo_surface_t * static cairo_surface_t *
open_libwebp( open_libwebp(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
// It is wholly zero-initialized by libwebp. // It is wholly zero-initialized by libwebp.
WebPDecoderConfig config = {}; WebPDecoderConfig config = {};
@ -1698,7 +1698,7 @@ fail:
#ifdef HAVE_LIBRAW // --------------------------------------------------------- #ifdef HAVE_LIBRAW // ---------------------------------------------------------
static cairo_surface_t * static cairo_surface_t *
open_libraw(const gchar *data, gsize len, GError **error) open_libraw(const char *data, gsize len, GError **error)
{ {
// https://github.com/LibRaw/LibRaw/issues/418 // https://github.com/LibRaw/LibRaw/issues/418
libraw_data_t *iprc = libraw_init( libraw_data_t *iprc = libraw_init(
@ -1884,7 +1884,7 @@ load_resvg_error(int err)
static cairo_surface_t * static cairo_surface_t *
open_resvg( open_resvg(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
GFile *file = g_file_new_for_uri(ctx->uri); GFile *file = g_file_new_for_uri(ctx->uri);
GFile *base_file = g_file_get_parent(file); GFile *base_file = g_file_get_parent(file);
@ -1974,7 +1974,7 @@ load_librsvg_render(FivIoRenderClosure *closure, double scale)
static cairo_surface_t * static cairo_surface_t *
open_librsvg( open_librsvg(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
GFile *base_file = g_file_new_for_uri(ctx->uri); GFile *base_file = g_file_new_for_uri(ctx->uri);
GInputStream *is = g_memory_input_stream_new_from_data(data, len, NULL); GInputStream *is = g_memory_input_stream_new_from_data(data, len, NULL);
@ -2108,7 +2108,7 @@ static const XcursorFile fiv_io_xcursor_adaptor = {
}; };
static cairo_surface_t * static cairo_surface_t *
open_xcursor(const gchar *data, gsize len, GError **error) open_xcursor(const char *data, gsize len, GError **error)
{ {
if (len > G_MAXLONG) { if (len > G_MAXLONG) {
set_error(error, "size overflow"); set_error(error, "size overflow");
@ -2318,7 +2318,7 @@ load_libheif_aux_images(const FivIoOpenContext *ioctx,
static cairo_surface_t * static cairo_surface_t *
open_libheif( open_libheif(
const gchar *data, gsize len, const FivIoOpenContext *ioctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ioctx, GError **error)
{ {
// libheif will throw C++ exceptions on allocation failures. // libheif will throw C++ exceptions on allocation failures.
// The library is generally awful through and through. // The library is generally awful through and through.
@ -2547,7 +2547,7 @@ fail:
static cairo_surface_t * static cairo_surface_t *
open_libtiff( open_libtiff(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
// Both kinds of handlers are called, redirect everything. // Both kinds of handlers are called, redirect everything.
TIFFErrorHandler eh = TIFFSetErrorHandler(NULL); TIFFErrorHandler eh = TIFFSetErrorHandler(NULL);
@ -2651,7 +2651,7 @@ load_gdkpixbuf_argb32_unpremultiplied(GdkPixbuf *pixbuf)
static cairo_surface_t * static cairo_surface_t *
open_gdkpixbuf( open_gdkpixbuf(
const gchar *data, gsize len, const FivIoOpenContext *ctx, GError **error) const char *data, gsize len, const FivIoOpenContext *ctx, GError **error)
{ {
// gdk-pixbuf controls the playback itself, there is no reliable method of // gdk-pixbuf controls the playback itself, there is no reliable method of
// extracting individual frames (due to loops). // extracting individual frames (due to loops).
@ -3002,7 +3002,7 @@ static guint model_signals[LAST_SIGNAL];
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static gboolean static gboolean
model_supports(FivIoModel *self, const gchar *filename) model_supports(FivIoModel *self, const char *filename)
{ {
gchar *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); gchar *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
if (!utf8) if (!utf8)
@ -3410,7 +3410,7 @@ set_metadata(WebPMux *mux, const char *fourcc, GBytes *data)
gboolean gboolean
fiv_io_save(cairo_surface_t *page, cairo_surface_t *frame, FivIoProfile target, fiv_io_save(cairo_surface_t *page, cairo_surface_t *frame, FivIoProfile target,
const gchar *path, GError **error) const char *path, GError **error)
{ {
g_return_val_if_fail(page != NULL, FALSE); g_return_val_if_fail(page != NULL, FALSE);
g_return_val_if_fail(path != NULL, FALSE); g_return_val_if_fail(path != NULL, FALSE);
@ -3574,7 +3574,7 @@ fiv_io_exif_orientation(const guint8 *tiff, gsize len)
} }
gboolean gboolean
fiv_io_save_metadata(cairo_surface_t *page, const gchar *path, GError **error) fiv_io_save_metadata(cairo_surface_t *page, const char *path, GError **error)
{ {
g_return_val_if_fail(page != NULL, FALSE); g_return_val_if_fail(page != NULL, FALSE);

View File

@ -39,7 +39,7 @@ void fiv_io_profile_free(FivIoProfile self);
extern const char *fiv_io_supported_media_types[]; extern const char *fiv_io_supported_media_types[];
char **fiv_io_all_supported_media_types(void); gchar **fiv_io_all_supported_media_types(void);
// Userdata are typically attached to all Cairo surfaces in an animation. // Userdata are typically attached to all Cairo surfaces in an animation.
@ -127,8 +127,8 @@ gboolean fiv_io_model_open(FivIoModel *self, GFile *directory, GError **error);
GFile *fiv_io_model_get_location(FivIoModel *self); GFile *fiv_io_model_get_location(FivIoModel *self);
typedef struct { typedef struct {
char *uri; ///< GIO URI gchar *uri; ///< GIO URI
char *collate_key; ///< Collate key for the filename gchar *collate_key; ///< Collate key for the filename
gint64 mtime_msec; ///< Modification time in milliseconds gint64 mtime_msec; ///< Modification time in milliseconds
} FivIoModelEntry; } FivIoModelEntry;
@ -145,7 +145,7 @@ unsigned char *fiv_io_encode_webp(
/// Saves the page as a lossless WebP still picture or animation. /// Saves the page as a lossless WebP still picture or animation.
/// If no exact frame is specified, this potentially creates an animation. /// If no exact frame is specified, this potentially creates an animation.
gboolean fiv_io_save(cairo_surface_t *page, cairo_surface_t *frame, gboolean fiv_io_save(cairo_surface_t *page, cairo_surface_t *frame,
FivIoProfile target, const gchar *path, GError **error); FivIoProfile target, const char *path, GError **error);
// --- Metadata ---------------------------------------------------------------- // --- Metadata ----------------------------------------------------------------
@ -173,4 +173,4 @@ FivIoOrientation fiv_io_exif_orientation(const guint8 *exif, gsize len);
/// Save metadata attached by this module in Exiv2 format. /// Save metadata attached by this module in Exiv2 format.
gboolean fiv_io_save_metadata( gboolean fiv_io_save_metadata(
cairo_surface_t *page, const gchar *path, GError **error); cairo_surface_t *page, const char *path, GError **error);

View File

@ -22,10 +22,10 @@
// --- Utilities --------------------------------------------------------------- // --- Utilities ---------------------------------------------------------------
static void exit_fatal(const gchar *format, ...) G_GNUC_PRINTF(1, 2); static void exit_fatal(const char *format, ...) G_GNUC_PRINTF(1, 2);
static void static void
exit_fatal(const gchar *format, ...) exit_fatal(const char *format, ...)
{ {
va_list ap; va_list ap;
va_start(ap, format); va_start(ap, format);
@ -250,7 +250,7 @@ on_motion(G_GNUC_UNUSED GtkWidget *self, GdkEventMotion *event,
} }
static gboolean static gboolean
open_jpeg(const gchar *data, gsize len, GError **error) open_jpeg(const char *data, gsize len, GError **error)
{ {
tjhandle h = tjInitDecompress(); tjhandle h = tjInitDecompress();
if (!h) { if (!h) {

View File

@ -306,9 +306,9 @@ complete_path(GFile *location, GtkListStore *model)
g_file_info_get_is_hidden(info)) g_file_info_get_is_hidden(info))
continue; continue;
char *parse_name = g_file_get_parse_name(child); gchar *parse_name = g_file_get_parse_name(child);
if (!g_str_has_suffix(parse_name, G_DIR_SEPARATOR_S)) { if (!g_str_has_suffix(parse_name, G_DIR_SEPARATOR_S)) {
char *save = parse_name; gchar *save = parse_name;
parse_name = g_strdup_printf("%s%c", parse_name, G_DIR_SEPARATOR); parse_name = g_strdup_printf("%s%c", parse_name, G_DIR_SEPARATOR);
g_free(save); g_free(save);
} }

View File

@ -378,7 +378,7 @@ fiv_thumbnail_produce(GFile *target, FivThumbnailSize max_size,
} }
static bool static bool
check_wide_thumbnail_texts(GBytes *thum, const gchar *target, time_t mtime, check_wide_thumbnail_texts(GBytes *thum, const char *target, time_t mtime,
bool *sRGB) bool *sRGB)
{ {
gsize len = 0; gsize len = 0;
@ -409,7 +409,7 @@ check_wide_thumbnail_texts(GBytes *thum, const gchar *target, time_t mtime,
static cairo_surface_t * static cairo_surface_t *
read_wide_thumbnail( read_wide_thumbnail(
const gchar *path, const gchar *uri, time_t mtime, GError **error) const char *path, const char *uri, time_t mtime, GError **error)
{ {
gchar *thumbnail_uri = g_filename_to_uri(path, NULL, error); gchar *thumbnail_uri = g_filename_to_uri(path, NULL, error);
if (!thumbnail_uri) if (!thumbnail_uri)
@ -447,7 +447,7 @@ read_wide_thumbnail(
static cairo_surface_t * static cairo_surface_t *
read_png_thumbnail( read_png_thumbnail(
const gchar *path, const gchar *uri, time_t mtime, GError **error) const char *path, const char *uri, time_t mtime, GError **error)
{ {
cairo_surface_t *surface = fiv_io_open_png_thumbnail(path, error); cairo_surface_t *surface = fiv_io_open_png_thumbnail(path, error);
if (!surface) if (!surface)

View File

@ -1161,7 +1161,7 @@ fiv_view_init(FivView *self)
// --- Public interface -------------------------------------------------------- // --- Public interface --------------------------------------------------------
static cairo_surface_t * static cairo_surface_t *
open_without_swapping_in(FivView *self, const gchar *uri) open_without_swapping_in(FivView *self, const char *uri)
{ {
FivIoOpenContext ctx = { FivIoOpenContext ctx = {
.uri = uri, .uri = uri,
@ -1190,7 +1190,7 @@ open_without_swapping_in(FivView *self, const gchar *uri)
// TODO(p): Progressive picture loading, or at least async/cancellable. // TODO(p): Progressive picture loading, or at least async/cancellable.
gboolean gboolean
fiv_view_set_uri(FivView *self, const gchar *uri) fiv_view_set_uri(FivView *self, const char *uri)
{ {
// This is extremely expensive, and only works sometimes. // This is extremely expensive, and only works sometimes.
g_clear_pointer(&self->enhance_swap, cairo_surface_destroy); g_clear_pointer(&self->enhance_swap, cairo_surface_destroy);

View File

@ -24,7 +24,7 @@ G_DECLARE_FINAL_TYPE(FivView, fiv_view, FIV, VIEW, GtkWidget)
/// Try to open the given file, synchronously, to be displayed by the widget. /// Try to open the given file, synchronously, to be displayed by the widget.
/// The current image is cleared on failure. /// The current image is cleared on failure.
gboolean fiv_view_set_uri(FivView *self, const gchar *uri); gboolean fiv_view_set_uri(FivView *self, const char *uri);
// And this is how you avoid glib-mkenums. // And this is how you avoid glib-mkenums.
typedef enum _FivViewCommand { typedef enum _FivViewCommand {

16
fiv.c
View File

@ -35,10 +35,10 @@
// --- Utilities --------------------------------------------------------------- // --- Utilities ---------------------------------------------------------------
static void exit_fatal(const gchar *format, ...) G_GNUC_PRINTF(1, 2); static void exit_fatal(const char *format, ...) G_GNUC_PRINTF(1, 2);
static void static void
exit_fatal(const gchar *format, ...) exit_fatal(const char *format, ...)
{ {
va_list ap; va_list ap;
va_start(ap, format); va_start(ap, format);
@ -618,7 +618,7 @@ update_files_index(void)
} }
static void static void
load_directory_without_reload(const gchar *uri) load_directory_without_reload(const char *uri)
{ {
gchar *uri_duplicated = g_strdup(uri); gchar *uri_duplicated = g_strdup(uri);
if (g.directory_back && !strcmp(uri, g.directory_back->data)) { if (g.directory_back && !strcmp(uri, g.directory_back->data)) {
@ -657,7 +657,7 @@ load_directory_without_reload(const gchar *uri)
} }
static void static void
load_directory_without_switching(const gchar *uri) load_directory_without_switching(const char *uri)
{ {
if (uri) { if (uri) {
load_directory_without_reload(uri); load_directory_without_reload(uri);
@ -682,7 +682,7 @@ load_directory_without_switching(const gchar *uri)
} }
static void static void
load_directory(const gchar *uri) load_directory(const char *uri)
{ {
load_directory_without_switching(uri); load_directory_without_switching(uri);
@ -761,7 +761,7 @@ on_notify_view_messages(FivView *view, G_GNUC_UNUSED gpointer user_data)
} }
static void static void
open(const gchar *uri) open(const char *uri)
{ {
GFile *file = g_file_new_for_uri(uri); GFile *file = g_file_new_for_uri(uri);
if (fiv_view_set_uri(FIV_VIEW(g.view), uri)) if (fiv_view_set_uri(FIV_VIEW(g.view), uri))
@ -1322,7 +1322,7 @@ on_button_press_browser_paned(
} }
static GtkWidget * static GtkWidget *
make_toolbar_button(const gchar *symbolic, const gchar *tooltip) make_toolbar_button(const char *symbolic, const char *tooltip)
{ {
GtkWidget *button = gtk_button_new(); GtkWidget *button = gtk_button_new();
gtk_button_set_image(GTK_BUTTON(button), gtk_button_set_image(GTK_BUTTON(button),
@ -1335,7 +1335,7 @@ make_toolbar_button(const gchar *symbolic, const gchar *tooltip)
} }
static GtkWidget * static GtkWidget *
make_toolbar_toggle(const gchar *symbolic, const gchar *tooltip) make_toolbar_toggle(const char *symbolic, const char *tooltip)
{ {
GtkWidget *button = gtk_toggle_button_new(); GtkWidget *button = gtk_toggle_button_new();
gtk_button_set_image(GTK_BUTTON(button), gtk_button_set_image(GTK_BUTTON(button),

10
xdg.c
View File

@ -21,7 +21,7 @@
/// defining is-a relations, and is traversed recursively. /// defining is-a relations, and is traversed recursively.
static void static void
add_applying_transitive_closure( add_applying_transitive_closure(
const gchar *element, GHashTable *relation, GHashTable *output) const char *element, GHashTable *relation, GHashTable *output)
{ {
// Stop condition. // Stop condition.
if (!g_hash_table_add(output, g_strdup(element))) if (!g_hash_table_add(output, g_strdup(element)))
@ -61,7 +61,7 @@ get_xdg_data_dirs(void)
GPtrArray *output = g_ptr_array_new_with_free_func(g_free); GPtrArray *output = g_ptr_array_new_with_free_func(g_free);
g_ptr_array_add(output, get_xdg_home_dir("XDG_DATA_HOME", ".local/share")); g_ptr_array_add(output, get_xdg_home_dir("XDG_DATA_HOME", ".local/share"));
const gchar *xdg_data_dirs; const char *xdg_data_dirs;
if (!(xdg_data_dirs = getenv("XDG_DATA_DIRS")) || !*xdg_data_dirs) if (!(xdg_data_dirs = getenv("XDG_DATA_DIRS")) || !*xdg_data_dirs)
xdg_data_dirs = "/usr/local/share/:/usr/share/"; xdg_data_dirs = "/usr/local/share/:/usr/share/";
@ -82,7 +82,7 @@ get_xdg_data_dirs(void)
// Derived from shared-mime-info-spec 0.21. // Derived from shared-mime-info-spec 0.21.
static void static void
read_mime_subclasses(const gchar *path, GHashTable *subclass_sets) read_mime_subclasses(const char *path, GHashTable *subclass_sets)
{ {
gchar *data = NULL; gchar *data = NULL;
if (!g_file_get_contents(path, &data, NULL /* length */, NULL /* error */)) if (!g_file_get_contents(path, &data, NULL /* length */, NULL /* error */))
@ -112,7 +112,7 @@ read_mime_subclasses(const gchar *path, GHashTable *subclass_sets)
} }
static gboolean static gboolean
filter_mime_globs(const gchar *path, guint is_globs2, GHashTable *supported_set, filter_mime_globs(const char *path, guint is_globs2, GHashTable *supported_set,
GHashTable *output_set) GHashTable *output_set)
{ {
gchar *data = NULL; gchar *data = NULL;
@ -120,7 +120,7 @@ filter_mime_globs(const gchar *path, guint is_globs2, GHashTable *supported_set,
return FALSE; return FALSE;
gchar *datasave = NULL; gchar *datasave = NULL;
for (const gchar *line = strtok_r(data, "\r\n", &datasave); line; for (const char *line = strtok_r(data, "\r\n", &datasave); line;
line = strtok_r(NULL, "\r\n", &datasave)) { line = strtok_r(NULL, "\r\n", &datasave)) {
if (*line == '#') if (*line == '#')
continue; continue;