On Nov 3, 2009, at 11:44 PM, David N. Lombard wrote:

On Tue, Nov 03, 2009 at 01:42:48PM -0800, Alexander Shishkin wrote:
On Втр, Ноя 03, 2009 at 04:28:09 +0100, Denys Vlasenko wrote:
         assert (*buffer == info->buffer);
         *buffer = info->buffer;
"Never say never".

Ummm, if the order was reversed, one could argue this was an attempt to catch a
silent data corruption (SDC).

I'd say the order was correct, but you had a freak bug; *buffer should be info->buffer, but once in a blue moon it isn't. You are trying to catch it, but haven't been able to figure it out yet. For release builds you can make sure whatever follows works by ensuring the value is correct. For debug builds, you are trying to catch it with an assert. Yeah, it's a crappy workaround that doesn't ensure correctness, but it could improve release-build robustness an order of magnitude until you are able to fix the bug. The resulting code looks ridiculous. But the more likely explanation for code like this is that the code transformed from something very different, and it's more or less in the category of a copy-bug now.

Regards,

  Lars J
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to