cssnode: Move clear_classes() into the NodeDeclaration
The previous code was crashing when used as the returned classes array would have been invalid after the first deletion. So if a 2nd class would be deleted, invalid memory might have been referenced.
This commit is contained in:
@ -307,6 +307,21 @@ gtk_css_node_declaration_remove_class (GtkCssNodeDeclaration **decl,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtk_css_node_declaration_clear_classes (GtkCssNodeDeclaration **decl)
|
||||
{
|
||||
if ((*decl)->n_classes == 0)
|
||||
return FALSE;
|
||||
|
||||
gtk_css_node_declaration_make_writable_resize (decl,
|
||||
(char *) get_classes (*decl) - (char *) *decl,
|
||||
0,
|
||||
sizeof (GQuark) * (*decl)->n_classes);
|
||||
(*decl)->n_classes = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtk_css_node_declaration_has_class (const GtkCssNodeDeclaration *decl,
|
||||
GQuark class_quark)
|
||||
|
Reference in New Issue
Block a user