[opensource-dev] Review Request: VWR-24321: Validate textures starting with 00 too.
Cron Stardust
kf6kjg at gmail.com
Tue Jan 18 20:51:36 PST 2011
> On Jan. 18, 2011, 12:09 p.m., Merov Linden wrote:
> > indra/newview/lltexturecache.cpp, line 1595
> > <http://codereview.secondlife.com/r/90/diff/1/?file=413#file413line1595>
> >
> > validate_idx being used in a test later, it's not just for (validate_idx == 0) that the behavior will be different. I need to understand better what that idx is all about or you need to give a bit more explanation before I approve this diff.
>
> Aleric Inglewood wrote:
> The debug setting CacheValidateCounter is set to 'next_id', which makes clear what it's meaning is: namely, the id that we will check next time. next_idx is a very local variable that is simply set to the value of CacheValidateCounter plus 1, and then that value is stored to CacheValidateCounter again for next time.
>
> validate_idx is the ID that is actually being tested this time. Hence, it should be the value of CacheValidateCounter before we increase that.
>
> Obviously, those ID's should be in the range 0...255, which is garanteed by doing a modulo 256 on next_id before writing it to CacheValidateCounter.
>
> The old code also increases validate_idx *before* it is used. That means that it will be in the range 1...256, and 0 is never tested (note that validate_idx is just increased, there is no modulo applied, so it's obvious that it shouldn't be increased). Even the wording ("next"_id) suggests that validate_idx should just be the value of CacheValidateCounter, which is the value of the previous next_id...
>
> So, after this patch, we get to the following code with validate_idx in the range 0...255, as it should be.
>
Just double checking, as switching from pre-increment to addition can change behavior: In both cases next_idx will have the same value after this line is executed, however validate_idx will not.
Prediff start state: validate_idx == 0;
Prediff stop state: validate_idx == 1; next_idx == 1;
Postdiff start state: validate_idx == 0;
Postdiff stop state: validate_idx == 0; next_idx == 1;
And another round over at the other end:
Prediff start state: validate_idx == 255;
Prediff stop state: validate_idx == 256; next_idx == 0;
Postdiff start state: validate_idx == 255;
Postdiff stop state: validate_idx == 255; next_idx == 0;
So, yes, validate_idx will only have a 255 in it in this last case, however the over-all behavior has changed: validate_idx isn't being incremented at all in this line.
WARNING: I have NOT looked at the rest of the diff, only at this one line. Nor do I know if validate_idx should or shouldn't be incremented by this line of code.
- Cron
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://codereview.secondlife.com/r/90/#review191
-----------------------------------------------------------
On Jan. 14, 2011, 1:02 p.m., Aleric Inglewood wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://codereview.secondlife.com/r/90/
> -----------------------------------------------------------
>
> (Updated Jan. 14, 2011, 1:02 p.m.)
>
>
> Review request for Viewer.
>
>
> Summary
> -------
>
> Trivial patch, just removes stupidity.
>
>
> This addresses bug VWR-24321.
> http://jira.secondlife.com/browse/VWR-24321
>
>
> Diffs
> -----
>
> doc/contributions.txt b0bd26c5638a
> indra/newview/lltexturecache.cpp b0bd26c5638a
>
> Diff: http://codereview.secondlife.com/r/90/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> Aleric
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.secondlife.com/pipermail/opensource-dev/attachments/20110119/c5ce404e/attachment-0001.htm
More information about the opensource-dev
mailing list