List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:June 2 2011 9:45pm
Subject:Re: bzr commit into mysql-5.5 branch (sergey.vojtovich:3416) Bug#12611785
View as plain text  
Hi Sergey,

On 6/2/11 5:34 AM, Sergey Vojtovich wrote:
> #At file:///home/svoj/mysql/server/mysql-5.5-audit/ based on
> revid:jimmy.yang@stripped
> 
>  3416 Sergey Vojtovich	2011-06-02
>       BUG#12611785 - AUDIT INTERFACE STRICT-ALIASING WARNINGS
>       
>       The types mysql_event_general/mysql_event_connection are
>       being cast to the incompatible type mysql_event. The way
>       mysql_event and the other types are designed are prone to
>       strict aliasing violations and can break things depending
>       on how compilers optimizes this code.
>       
>       This patch fixes audit interface, so it confirms to strict-
>       aliasing rules. It introduces incompatible changes to audit
>       interface:
>       - mysql_event type has been removed;
>       - event_class has been removed from mysql_event_generic and
>         mysql_event_connection types;
>       - st_mysql_audit::event_notify() second argument is event_class;
>       - st_mysql_audit::event_notify() third argument is event of type
>         (const void *).
>       

OK to push. One minor comment below.

> -static void event_class_dispatch(THD *thd, const struct mysql_event *event)
> +static void event_class_dispatch(THD *thd, unsigned int event_class,
> +                                 const void *event)
>  {
> +  struct st_mysql_event_generic event_generic;
> +  event_generic.event_class= event_class;
> +  event_generic.event= event;
>    /*
>      Check if we are doing a slow global dispatch. This event occurs when
>      thd == NULL as it is not associated with any particular thread.
>    */
>    if (unlikely(!thd))
>    {
> -    plugin_foreach(thd, plugins_dispatch, MYSQL_AUDIT_PLUGIN, (void*) event);
> +    plugin_foreach(thd, plugins_dispatch, MYSQL_AUDIT_PLUGIN,
> +                   (void *) &event_generic);
>    }
>    else
>    {
> @@ -476,7 +487,7 @@ static void event_class_dispatch(THD *th
>      plugins_last= plugins + thd->audit_class_plugins.elements;
>  
>      for (; plugins < plugins_last; plugins++)
> -      plugins_dispatch(thd, *plugins, (void*) event);
> +      plugins_dispatch(thd, *plugins, (void *) &event_generic);

Void cast not necessary, it's automatic.

Thanks for working on this!

Regards,

davi
Thread
bzr commit into mysql-5.5 branch (sergey.vojtovich:3416) Bug#12611785Sergey Vojtovich2 Jun
  • Re: bzr commit into mysql-5.5 branch (sergey.vojtovich:3416) Bug#12611785Davi Arnaut3 Jun
    • Re: bzr commit into mysql-5.5 branch (sergey.vojtovich:3416)Bug#12611785Sergey Vojtovich3 Jun