mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-02 07:23:41 +02:00
girnode: Improve int types in GIIrNodeField
`GIIrNodeField` is built dynamically at runtime (rather than being
mmapped from disk), so its types can accurately reflect their runtime
semantics, rather than an on-disk format.
As part of this, switch from `atoi()` to `g_ascii_string_to_unsigned()`
for parsing the relevant fields from a GIR XML file. This means we now
get error handling for invalid integers.
This also includes some offset validity changes which were forgotten
from commit 515b3fc1dc
.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Helps: #3155
This commit is contained in:
@@ -392,6 +392,7 @@ compute_struct_field_offsets (GIIrTypelibBuild *build,
|
||||
size = GI_ALIGN (size, member_alignment);
|
||||
alignment = MAX (alignment, member_alignment);
|
||||
field->offset = size;
|
||||
field->offset_state = GI_IR_OFFSETS_COMPUTED;
|
||||
size += member_size;
|
||||
}
|
||||
else
|
||||
@@ -399,7 +400,10 @@ compute_struct_field_offsets (GIIrTypelibBuild *build,
|
||||
}
|
||||
|
||||
if (have_error)
|
||||
field->offset = -1;
|
||||
{
|
||||
field->offset = 0;
|
||||
field->offset_state = GI_IR_OFFSETS_FAILED;
|
||||
}
|
||||
}
|
||||
else if (member->type == GI_IR_NODE_CALLBACK)
|
||||
{
|
||||
|
Reference in New Issue
Block a user