From 25ae968fc2be329fca502ea03d9ee10a4219ad6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 16 Jan 2024 01:57:09 +0100 Subject: [PATCH] girepository: Use expected signed types for iterating We are using various indexes types, but not always using the correct sign or size, so let's adapt this to ensure we're consistent with the values we're comparing with. --- girepository/gifunctioninfo.c | 4 ++-- girepository/giinterfaceinfo.c | 4 ++-- girepository/giobjectinfo.c | 2 +- girepository/girepository-private.h | 4 ++-- girepository/girepository.c | 4 ++-- girepository/girffi.c | 3 +-- girepository/girnode.c | 4 ++-- girepository/girparser.c | 8 ++++--- girepository/gitypelib.c | 35 +++++++++++++---------------- girepository/givfuncinfo.c | 4 ++-- 10 files changed, 35 insertions(+), 37 deletions(-) diff --git a/girepository/gifunctioninfo.c b/girepository/gifunctioninfo.c index 74f49020c..9b3b1e8d6 100644 --- a/girepository/gifunctioninfo.c +++ b/girepository/gifunctioninfo.c @@ -51,14 +51,14 @@ GIFunctionInfo * gi_base_info_find_method (GIBaseInfo *base, uint32_t offset, - unsigned n_methods, + uint16_t n_methods, const char *name) { /* FIXME hash */ GIRealInfo *rinfo = (GIRealInfo*)base; Header *header = (Header *)rinfo->typelib->data; - for (unsigned i = 0; i < n_methods; i++) + for (uint16_t i = 0; i < n_methods; i++) { FunctionBlob *fblob = (FunctionBlob *)&rinfo->typelib->data[offset]; const char *fname = (const char *)&rinfo->typelib->data[fblob->name]; diff --git a/girepository/giinterfaceinfo.c b/girepository/giinterfaceinfo.c index a083a26a8..b207d195d 100644 --- a/girepository/giinterfaceinfo.c +++ b/girepository/giinterfaceinfo.c @@ -323,10 +323,10 @@ GISignalInfo * gi_interface_info_find_signal (GIInterfaceInfo *info, const char *name) { - unsigned int n_signals; + uint32_t n_signals; n_signals = gi_interface_info_get_n_signals (info); - for (unsigned int i = 0; i < n_signals; i++) + for (uint32_t i = 0; i < n_signals; i++) { GISignalInfo *siginfo = gi_interface_info_get_signal (info, i); diff --git a/girepository/giobjectinfo.c b/girepository/giobjectinfo.c index e4890153a..b55390ed9 100644 --- a/girepository/giobjectinfo.c +++ b/girepository/giobjectinfo.c @@ -72,7 +72,7 @@ gi_object_info_get_field_offset (GIObjectInfo *info, offset = rinfo->offset + header->object_blob_size + (blob->n_interfaces + blob->n_interfaces % 2) * 2; - for (unsigned int i = 0; i < n; i++) + for (size_t i = 0; i < n; i++) { field_blob = (FieldBlob *)&rinfo->typelib->data[offset]; offset += header->field_blob_size; diff --git a/girepository/girepository-private.h b/girepository/girepository-private.h index 3f76ffa0a..f0f700744 100644 --- a/girepository/girepository-private.h +++ b/girepository/girepository-private.h @@ -233,10 +233,10 @@ void gi_type_info_init (GIBaseInfo *info, GIFunctionInfo * gi_base_info_find_method (GIBaseInfo *base, uint32_t offset, - unsigned n_methods, + uint16_t n_methods, const char *name); GIVFuncInfo * gi_base_info_find_vfunc (GIRealInfo *rinfo, uint32_t offset, - unsigned n_vfuncs, + uint16_t n_vfuncs, const char *name); diff --git a/girepository/girepository.c b/girepository/girepository.c index ba3d677f7..24579df59 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -531,7 +531,7 @@ get_typelib_dependencies_transitive (GIRepository *repository, immediate_dependencies = get_typelib_dependencies (typelib); - for (unsigned int i = 0; immediate_dependencies != NULL && immediate_dependencies[i]; i++) + for (size_t i = 0; immediate_dependencies != NULL && immediate_dependencies[i]; i++) { char *dependency; const char *last_dash; @@ -1153,7 +1153,7 @@ gi_repository_get_loaded_namespaces (GIRepository *repository) { GList *l, *list = NULL; char **names; - int i; + size_t i; repository = get_repository (repository); diff --git a/girepository/girffi.c b/girepository/girffi.c index 7532fe3f5..b9e6ee8b4 100644 --- a/girepository/girffi.c +++ b/girepository/girffi.c @@ -175,8 +175,7 @@ gi_callable_info_get_ffi_arg_types (GICallableInfo *callable_info, { ffi_type **arg_types; gboolean is_method, throws; - size_t n_invoke_args; - unsigned int n_args, i, offset; + size_t n_args, n_invoke_args, i, offset; g_return_val_if_fail (callable_info != NULL, NULL); diff --git a/girepository/girnode.c b/girepository/girnode.c index 7ecee4ca6..c6e8fa4cb 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -1047,7 +1047,7 @@ find_entry_node (GIIrTypelibBuild *build, { GIIrModule *module = build->module; GList *l; - unsigned int i; + size_t i; unsigned int n_names; char **names; GIIrNode *result = NULL; @@ -1220,7 +1220,7 @@ serialize_type (GIIrTypelibBuild *build, GIIrNodeType *node, GString *str) { - int i; + size_t i; if (GI_TYPE_TAG_IS_BASIC (node->tag)) { diff --git a/girepository/girparser.c b/girepository/girparser.c index d23035aec..06e32aa96 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -383,7 +383,9 @@ find_attribute (const char *name, const char **attribute_names, const char **attribute_values) { - for (int i = 0; attribute_names[i] != NULL; i++) + size_t i; + + for (i = 0; attribute_names[i] != NULL; i++) if (strcmp (attribute_names[i], name) == 0) return attribute_values[i]; @@ -484,8 +486,8 @@ static BasicTypeInfo basic_types[] = { static const BasicTypeInfo * parse_basic (const char *str) { - unsigned int i; - unsigned int n_basic = G_N_ELEMENTS (basic_types); + size_t i; + size_t n_basic = G_N_ELEMENTS (basic_types); for (i = 0; i < n_basic; i++) { diff --git a/girepository/gitypelib.c b/girepository/gitypelib.c index 93b2c7410..1164784cf 100644 --- a/girepository/gitypelib.c +++ b/girepository/gitypelib.c @@ -198,7 +198,7 @@ gi_typelib_get_dir_entry_by_name (GITypelib *typelib, const char *name) { Section *dirindex; - int i, n_entries; + size_t i, n_entries; const char *entry_name; DirEntry *entry; @@ -247,9 +247,8 @@ gi_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib, const char *gtype_name) { Header *header = (Header *)typelib->data; - unsigned int i; - for (i = 1; i <= header->n_local_entries; i++) + for (size_t i = 1; i <= header->n_local_entries; i++) { RegisteredTypeBlob *blob; const char *type; @@ -400,11 +399,11 @@ gi_typelib_get_dir_entry_by_error_domain (GITypelib *typelib, GQuark error_domain) { Header *header = (Header *)typelib->data; - unsigned int n_entries = header->n_local_entries; + size_t n_entries = header->n_local_entries; const char *domain_string = g_quark_to_string (error_domain); DirEntry *entry; - for (unsigned int i = 1; i <= n_entries; i++) + for (size_t i = 1; i <= n_entries; i++) { EnumBlob *blob; const char *enum_domain_string; @@ -743,11 +742,11 @@ validate_param_type_blob (GITypelib *typelib, uint32_t offset, uint32_t signature_offset, gboolean return_type, - int n_params, + unsigned int n_params, GError **error) { ParamTypeBlob *blob; - int i; + unsigned int i; blob = (ParamTypeBlob*)&typelib->data[offset]; @@ -967,7 +966,7 @@ validate_signature_blob (GITypelib *typelib, return FALSE; } - for (unsigned int i = 0; i < blob->n_arguments; i++) + for (size_t i = 0; i < blob->n_arguments; i++) { if (!validate_arg_blob (typelib, offset + sizeof (SignatureBlob) + @@ -1336,7 +1335,7 @@ validate_signal_blob (GITypelib *typelib, GError **error) { SignalBlob *blob; - int n_signals; + size_t n_signals; if (typelib->len < offset + sizeof (SignalBlob)) { @@ -1405,7 +1404,7 @@ validate_vfunc_blob (GITypelib *typelib, GError **error) { VFuncBlob *blob; - int n_vfuncs; + size_t n_vfuncs; if (typelib->len < offset + sizeof (VFuncBlob)) { @@ -1464,7 +1463,7 @@ validate_struct_blob (ValidateContext *ctx, { GITypelib *typelib = ctx->typelib; StructBlob *blob; - int i; + size_t i; uint32_t field_offset; if (typelib->len < offset + sizeof (StructBlob)) @@ -1561,7 +1560,6 @@ validate_enum_blob (ValidateContext *ctx, { GITypelib *typelib = ctx->typelib; EnumBlob *blob; - int i; uint32_t offset2; if (typelib->len < offset + sizeof (EnumBlob)) @@ -1622,7 +1620,7 @@ validate_enum_blob (ValidateContext *ctx, push_context (ctx, get_string_nofail (typelib, blob->name)); - for (i = 0; i < blob->n_values; i++, offset2 += sizeof (ValueBlob)) + for (size_t i = 0; i < blob->n_values; i++, offset2 += sizeof (ValueBlob)) { if (!validate_value_blob (typelib, offset2, @@ -1650,7 +1648,7 @@ validate_enum_blob (ValidateContext *ctx, #endif } - for (i = 0; i < blob->n_methods; i++, offset2 += sizeof (FunctionBlob)) + for (size_t i = 0; i < blob->n_methods; i++, offset2 += sizeof (FunctionBlob)) { if (!validate_function_blob (ctx, offset2, BLOB_TYPE_ENUM, error)) return FALSE; @@ -1669,7 +1667,7 @@ validate_object_blob (ValidateContext *ctx, GITypelib *typelib = ctx->typelib; Header *header; ObjectBlob *blob; - int i; + size_t i; uint32_t offset2; uint16_t n_field_callbacks; @@ -1871,7 +1869,7 @@ validate_interface_blob (ValidateContext *ctx, GITypelib *typelib = ctx->typelib; Header *header; InterfaceBlob *blob; - int i; + size_t i; uint32_t offset2; header = (Header *)typelib->data; @@ -2071,7 +2069,7 @@ validate_directory (ValidateContext *ctx, GITypelib *typelib = ctx->typelib; Header *header = (Header *)typelib->data; DirEntry *entry; - int i; + size_t i; if (typelib->len < header->directory + header->n_entries * sizeof (DirEntry)) { @@ -2341,7 +2339,6 @@ gi_typelib_do_dlopen (GITypelib *typelib) if (shlib_str != NULL && shlib_str[0] != '\0') { char **shlibs; - int i; /* shared-library is a comma-separated list of libraries */ shlibs = g_strsplit (shlib_str, ",", 0); @@ -2350,7 +2347,7 @@ gi_typelib_do_dlopen (GITypelib *typelib) * again with g_module_open(), the same file handle will be returned. See bug: * http://bugzilla.gnome.org/show_bug.cgi?id=555294 */ - for (i = 0; shlibs[i]; i++) + for (size_t i = 0; shlibs[i]; i++) { GModule *module; diff --git a/girepository/givfuncinfo.c b/girepository/givfuncinfo.c index e5ce6bdf1..3baff909f 100644 --- a/girepository/givfuncinfo.c +++ b/girepository/givfuncinfo.c @@ -48,13 +48,13 @@ GIVFuncInfo * gi_base_info_find_vfunc (GIRealInfo *rinfo, uint32_t offset, - unsigned n_vfuncs, + uint16_t n_vfuncs, const char *name) { /* FIXME hash */ Header *header = (Header *)rinfo->typelib->data; - for (unsigned i = 0; i < n_vfuncs; i++) + for (uint16_t i = 0; i < n_vfuncs; i++) { VFuncBlob *fblob = (VFuncBlob *)&rinfo->typelib->data[offset]; const char *fname = (const char *)&rinfo->typelib->data[fblob->name];