Sven Schule asked:Rebel wrote:I can imagine the use of "setjmp" in a chess program. It's excellent for recursive stuff. Like you I used it in my early 6502 assembler days to save ROM space. Just push/pop the stack, there you go, wonderful.... If Bob really said the above bold he better retract. I know another programmer who also used it, maybe still does. That makes 3 already.Chris Whittington wrote: Well, I used the technique in 1980-something in Z80 assembler to jump out of the search, all you need to do then is reset the stack pointer and you're fine, back at the tree root. I changed to a more 'acceptable' method of unwinding back up the tree after staff programmers made a huge fuss about how uncompliant the technique was. But, Oxford Softworks later licensed a small chess program source for porting to various small platforms and I was surprised to see the programmer using setjmp (ie jump out of the search and reset vital pointers), told him to get 'proper(!)' and he refused, claiming it was just fine. This was a highly educated and qualified university guy who wrote masses of complex stuff in a bunch of fields and was highly reliable for producing bug free code, fast.
setjmp is way more common that Bob might want to think, it may offend purists but no way can it be suggested it is so rare that dual use implies plagiarism.
Curiously, in answer to someone recently, I read that Bob postulated setjmp as the most incriminating piece of code in Rybka!!
Ed
But since you know the Zach examples, which of these points would serve "best" from your viewpoint to prove that code was literally copied from Fruit 2.1 to Rybka 1.0 beta? Just one example is sufficient in the beginning.
Bob Hyatt replied:
The first one that jumped out at me when we started the process was the code segment containing the setjmp()/longjmp() construct. You can find references to this in the past. It is an unusual way to unwind a search that is not thread-happy, and invites very subtle bugs. The usage was identical in both programs with the surrounding code. There were others.