I have a weird problem, in 2 files:

file1.c:

int api_show(FILE *tx,char *args) {
	char *p;

	if (!strncmp("bl",args,2)) {
		p = &args[3];
		printf("print_bl... p=%s\n",p);
		print_bl(tx,p);
	}
	return 0;
}


file2.c:

void print_bl(FILE *fp,char *user){
	print_bls(fp,user);
}


gdb:

136             if (!strncmp("bl",args,2)){
(gdb) 
137                     p = &args[3];
(gdb) 
138                     printf("print_bl... p=%s\n",p);
(gdb) print p
$1 = 0xbfa83e90 "juzzy"
(gdb) print tx
$2 = (FILE *) 0x28220fb8
(gdb) s
print_bl... p=juzzy
139                     print_bl(tx,p);
(gdb) s
print_bl (fp=0x1c, user=0x1c <Error reading address 0x1c: Bad address>) at file2.c:248
248             print_bls(fp,user);
(gdb) print fp
$3 = (FILE *) 0x1c
(gdb) print user
$4 = 0x1c <Error reading address 0x1c: Bad address>
(gdb) 



problem:

both user and the tx/fp are getting getting passed as 0x1c
they work fine when passed around in the same file, but when I pass them to the functions in the second file, it fubar's them.