> On June 16, 2011, 4:23 p.m., Boroondas Gupte wrote:
> > indra/newview/llnearbychathandler.cpp, lines 375-382
> > <http://codereview.secondlife.com/r/341/diff/2/?file=2978#file2978line375>
> >
> >     This function's return type should be changed to bool, if it's intended 
> > for use with std::sort. (And that's how it's being used currently.)
> 
> Oz Linden wrote:
>     and better yet... there's no excuse in a routine this small for multiple 
> returns.
>     Add a local variable and use the else clause.
>     
>     bool inOrder;
>     if ( .... test ... )
>     {
>        inOrder = false;
>     }
>     else
>     {
>        ... calc ...
>        inOrder = v1 > v2;
>     }
>     return inOrder;
>     
>     any half way decent optimizer will put that bool in register anyway, so 
> there is no performance difference at all and the code is much clearer and 
> easier to put breakpoints and logging into.
>
> 
> Boroondas Gupte wrote:
>     I must say I find the version with two returns perfectly readable, maybe 
> specifically because the routine is short. One doesn't easily miss that there 
> are multiple returns, other than one might when looking at a screen-filling 
> routine.
>     
>     Though, if you do it with if-else, maybe handle the usual case before the 
> special case (i.e. test for first.get() && second.get). Also, I'd prefer it 
> the variable to store the return value would be initialized upon definition, 
> which can even save the else-clause:
>     
>       bool inOrder = false; // default return value, in case one or both 
> toasts don't exist
>     
>       if ( .... positive test ... )
>       {
>          ... calc ...
>          inOrder = v1 > v2;
>       }
>     
>       return inOrder;
>     
>     And while I'm bike-shedding, we could get rid of the multiple get() calls 
> (although those are probably cheap):
>     
>       LLToast* toast_1 = first.get();
>       LLToast* toast_2 = second.get();
>     
>       bool inOrder = false; // default return value, in case one or both 
> toasts don't exist
>     
>       if (toast_1 && toast_2) // Toasts might already be gone, see STORM-1352.
>       {
>          inOrder = toast_1->getTimeLeftToLive() > 
> toast_2->getTimeLeftToLive();
>       }
>     
>       return inOrder;

Oz, I'm not a fan of the endless-indentation-single-return style, especially 
when it comes to a simple case of handling illegal arguments.


- Vadim


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://codereview.secondlife.com/r/341/#review759
-----------------------------------------------------------


On June 20, 2011, 6:55 a.m., Vadim ProductEngine wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://codereview.secondlife.com/r/341/
> -----------------------------------------------------------
> 
> (Updated June 20, 2011, 6:55 a.m.)
> 
> 
> Review request for Viewer.
> 
> 
> Summary
> -------
> 
> Apparently, a nearby chat toast got somehow destroyed while still remaining 
> in the list of active toasts.
> Attempt to sort active toasts in showToastsBottom() then triggered the crash.
> 
> I don't know how to reproduce the crash, i.e. force destroying a toast in a 
> way that its onClose() method (which would remove references to the toast) 
> isn't called.
> So we'll just remove references to the toast whenever it's destroyed.
> 
> 
> This addresses bug STORM-1352.
>     http://jira.secondlife.com/browse/STORM-1352
> 
> 
> Diffs
> -----
> 
>   indra/newview/llnearbychathandler.cpp UNKNOWN 
> 
> Diff: http://codereview.secondlife.com/r/341/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Vadim
> 
>

_______________________________________________
Policies and (un)subscribe information available here:
http://wiki.secondlife.com/wiki/OpenSource-Dev
Please read the policies before posting to keep unmoderated posting privileges

Reply via email to