[asterisk-dev] backport RAII_VAR to 1.8?
Richard Mudgett
rmudgett at digium.com
Fri May 17 13:14:56 CDT 2013
> I'm working on a fairly invasive set of fixes that apply to 1.8. It
> would be really handy to be able to use RAII_VAR there since I
> intend to submit the same fix for 11 and trunk, as well.
>
>
> Is there any reason we can't include RAII_VAR in 1.8?
>
> The only reason I can think of is some OS versions have old compilers
> that do not support the gcc feature used for RAII_VAR.
> CentOS comes to mind.
>
>
> It is the greatest thing since sliced bread...
>
> I do know that when we added it, we had at least one bug report from
> someone who was using clang to compile Asterisk. We opted not to
> remove
> RAII_VAR, but at least at the time 11 was new, and they still had 1.8
> to
> use.
>
> Backporting it to 1.8 midstream would be a hard stop to anyone
> attempting to compile Asterisk with anything other than gcc - which
> is,
> admittedly, unsupported.
>
> I don't think that's a show-stopper, but it is probably the largest
> risk
> that I can think of. I'm personally fine with it, but at least wanted
> to
> note that before you went ahead and did it.
>
> A better question would be, would you backport it into certified
> asterisk too?
>
> I'm always against backporting to a release branch, simply because we
> never can fully predict the results. That said, I'm still at
> 1.8.7.1, so as long as we expect bug reports to happen and we
> address any regressions with higher priority, but that is just my
> opinion.
>
>
> The size of this backport is tiny. It's a small macro. It's just
> incredibly useful and actually helps write code less likely to
> contain errors.
>
>
> If it's a problem, it shouldn't be *too* hard to pull it back out.
> The difficultly comes with however many places you have started
> using it. In my case, it's in the SLA code, so it's a pretty small
> fraction of the code base. If it gets backported, explodes through
> the 1.8 code, and then a problem is found 6 months later, that would
> be much more painful. I wouldn't expect it to spread too fast in
> 1.8, since the changes are intentionally minimal. It just might make
> fixing some bugs easier.
>
>
> Compiler version impact is worth considering. I don't know what the
> specific impact is in terms of distro support, though. How about we
> assume it's ok, and if there's an uproar, I agree to do the work to
> revert the usage I added.
You should also backport ao2_cleanup() which was created for use with
RAII_VAR to tolerate NULL pointers.
void ao2_cleanup(void *obj)
{
if (obj) {
ao2_ref(obj, -1);
}
}
Richard
More information about the asterisk-dev
mailing list