Solved: Why does it have to be static?

Damn. It just goes to show, when writing new and shorter code in the post, instead of doing a cut-n-paste from the real code, one introduces new errors. And there is one more error in my initial post. I was just gettng very very frustrated. Sorry. If you look at the real code (link in above post), you'll see that I do know the difference.

Still the problem is there.

When I write

static int P ;
  F ( &P ) ;
   :
void function F ( int *P) { *P = 42 ; }

it works fine

BUT when I use

/*dynamic*/ int P ;
 F ( &P ) ;
   :
void function F ( int *P) { *P = 42 ; }

I get "random" results