s3-talloc Change TALLOC_ZERO_P() to talloc_zero()

Andrew Bartlett abartlet at samba.org
Fri Jun 10 17:40:55 MDT 2011

On Fri, 2011-06-10 at 13:25 +0200, Michael Adam wrote:
> Hi Andrew,
> Andrew Bartlett wrote:
> > The branch, master has been updated
> >        ...
> >        via  ad0a07c s3-talloc Change TALLOC_ZERO_P() to talloc_zero()
> >        ...
> >
> > commit ad0a07c531fadd1639c5298951cfaf5cfe0cb10e
> > Author: Andrew Bartlett <abartlet at samba.org>
> > Date:   Tue Jun 7 11:44:43 2011 +1000
> > 
> >     s3-talloc Change TALLOC_ZERO_P() to talloc_zero()
> >     
> >     Using the standard macro makes it easier to move code into common, as
> >     TALLOC_ZERO_P isn't standard talloc.
> You really need to be extremely careful with monster commits like
> this, changing so many files.
> E.g. Did you do this talloc hierarchy change intentionally:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c
> index 80d8ed1..0e1750d 100644
> --- a/source3/winbindd/idmap_autorid.c
> +++ b/source3/winbindd/idmap_autorid.c
> @@ -446,7 +446,7 @@ static NTSTATUS idmap_autorid_initialize(struct idmap_domain *dom)
>                 goto error;
>         }
> -       config = TALLOC_ZERO_P(frame, struct autorid_global_config);
> +       config = talloc_zero(dom, struct autorid_global_config);
>         if (!config) {
>                 DEBUG(0, ("Out of memory!\n"));
>                 status = NT_STATUS_NO_MEMORY;
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> I guess this file had just changed between you writing the patch and
> pushing the patch to autobuild.
> In fact the chang would be correct, because my previous commit to
> autobuild has an error. But I was wondering whether you noticed this
> and fixed it in stealth mode, or if this was just accidentially "fixed"
> unnoticed in conflict resolution...

Yes, this was a case of incorrect conflict resolution, and for that I do
apologise.  There was only one conflict, so hopefully there are no other
dragons lurking in this change. 

Rest assured I would never slip in 'fixup' changes unannounced into a
commit such as this.

> Don't worry about changin the code, please: I am just changing/fixing
> this code file anyways. But I was just curious because I stumbled
> over this conflict when I now tried to rebase changes I made... :-)
> Again, my lesson is: Try to change as little files in one
> commit as possible.

There are still a number of other issues (types without _t, True and
False) that come up every time I move code from source3 to the common
code, so I am very keen to learn the lessons here:  How would you have
handled this better?

So far to reduce the patch risk I split the change up into one commit
per global replace, and confirmed each one twice (emacs interactive
tag-replace and git add --patch).  In some senses the safest thing to do
then would have been to just put it in the tree, when the only actions
were programmatic search and replace.  But for a change this big it
seemed in-prudent, which in turn brings the risk of the tree changing,
which then introduces the unsafe thing: the human editor. 

It is critical to me that this kind of harmonisation is regarded as
low-risk, so what additional steps would you recommend?  How would you
have handled this with 'as little files in one commit as possible'?
Would the same patches, but of sub-trees 'remove TALLOC macros under
smbd/' been better?


Andrew Bartlett

Andrew Bartlett                                http://samba.org/~abartlet/
Authentication Developer, Samba Team           http://samba.org

More information about the samba-technical mailing list