Axel Naumann on
Hi there,
given that we usually only let our code speak, I thought it might be a good idea to write a few lines, once a while, on what we do. You will mostly get to hear what I am up to because I don't want to speak (too much :-) for my colleagues. My main responsibility is CINT and Reflex, i.e. ROOT's interpreter and dictionary engines, stuff that you probably only hear about because you ended up reading this page! :-)
Everybody in the ROOT team is preparing for the coming v5.24 production release announced here, to be published on June 30th. We are trying to fix as many of the remaining bugs as possible; we test as much as possible; new developments are stalled until after the release. If you watch the development notes you can see that already now most of them contain the word "fix". Today is the last day for free access for us; afterwards every patch will be reviewed before it can be committed. This should again give us a pretty stable and bug-free release.
I promised you some CINT highlights from today - so here we go: I fixed an unbelievable bug:
a=2;a(2)
crashed CINT. Anybody with a reasonable, non-interpreter infected brain would wonder: how can CINT try to call an integer? Well, think of function pointers: they are nothing but integers, storing the address of the function that they point to. And that's exactly what happened: CINT thought that
a
in
a(2)
is a function pointer, because this call is valid for function references. Bad idea. But that's now fixed.
As the submitter proudly (and rightfully so!) stated, this brought CINT down within seven characters. He could have even skipped the argument, reducing it to six characters. Can you find a CINT bug as fundamental as that? Of course I don't care about inherently broken code like
*(int*)0x12=1
...
That's it for today - let's see what this blog brings next time! O and yes: comments and requests for topics (it doesn't have to be CINT :-) are welcome!
Don't break leg nor code,
Axel.