On 12/13/05, Tilman Sauerbeck <[EMAIL PROTECTED]> wrote: > Eric Sandall [2005-12-13 11:16]: > > > while (dst < dst_end) > > > - *dst++ = (*src++ | PIXEL_SOLID_ALPHA) & (*dst | 0x00ffffff); > > > + *dst = (*src | PIXEL_SOLID_ALPHA) & (*dst | 0x00ffffff); > > > + dst++; > > > + src++; > > > } > > > > Shouldn't pre-increment (e.g. ++dst) be used instead of post-increment > > (e.g. dst++) as the post-increment in C, IIRC, requires the object to > > be copied, incremented, and then reassigned, whereas the pre-increment > > just increments without all the copying and reassigning. > > Since you cannot overload the ++ operator, and there are no classes and > objects in C, this doesn't apply to C at all.
Well, a stupid compiler might save a copy before incrementing. but even if it does, it would not copy the whole dst buffer (I guess this is what you would mean by "the object"), just the 32- (or 64-) bit pointer. Any self-respecting compiler will see that the return value of the increment is not used, and optimize it appropriately, even with -O0. Tilman is correct though, this applies more to C++, where the incremented object could be a class, than to C, where you can only increment integral and pointer types. The problem with the original code (which has since been removed from CVS for other reasons until Jose can work on it a little more) is that it does not take into account WHEN the increment happens.. Does it happen before, or after the r-value is evaluated? (I believe this is implementation-defined.) On my box, it was happening before, leaving the dereference on the RHS to point one after the dst on the LHS, and caused a segfault for me when it reached over the end of the array despite the bounds checking in the loop. A small, easy-to-miss oversight by Jose. I was probably lucky that it segfaulted for me, allowing me to find it, in fact. d# > > Regards, > Tilman > > > ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_idv37&alloc_id865&op=click _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel