INMOS C compiler Version 2.01.10 pitfall
From
Mike B.@21:1/5 to
All on Mon Feb 6 14:58:46 2023
Hi!
I like to reuse the arguments of a C function passed by value. Why waste space. BUT - don't do that with the function arguments for a process!
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
void newproc( Process *p, int arg1, int arg2, int arg3 ) {
p = p;
printf( "arg1=%d, arg2=%d, arg3=%d\n", arg1, arg2, arg3 );
arg3--;
arg2++; /* don't change process arguments even they were passed by value !!! */
}
int main( void ) {
Process *x;
int pa1 = 1, pa2 = 2, pa3 = 3;
if (( x = ProcAlloc( newproc, 0, 3, pa1, pa2, pa3 )) == NULL ) abort();
ProcPar( x, NULL );
ProcPar( x, NULL );
ProcPar( x, NULL );
return 0;
}
ubuntu@kria:~$ $ISERVER -sb proc.btl
arg1=1, arg2=2, arg3=3
arg1=1, arg2=3, arg3=2
arg1=1, arg2=4, arg3=1
-Mike
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)