Hi all, I'm facing really weird behavior of simple C program running under OpenBSD (4.7 and CURRENT).
The code follows. The output also. The file to test the program with is also inline attached. The decomp procedure reads input, writes it to the stdout. All 4-chars preceeded by number are printer number times (e.g. 4abcd -> abcdabcdabcdabcd). ./a.c < test_file.txt should have output aaaaa bb ccccccccccc dddd however it sometimes ( 1 from 3 tryies, sometimes 1 from 20 or even 1 from 40) looks like aaaaa bb ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccc dddd I've tryied this code with OpenBSD 4.7, OpenBSD CURRENT, CentOS Linux, FreeBSD 8.0 (all i386 arch), but the problem occurs only at OpenBSD (both versions). Does anyone know please where could be the problem? Because I have really no idea. Thanks a lot, Milan Bartos ---- CODE --- #include <stdio.h> #include <stdlib.h> void decomp(unsigned int N){ char *pole; pole=malloc( sizeof(char) * N ); char character; int i,j; int counter; while( (character = getchar()) != EOF){ if( isdigit(character) ){ counter=atoi(&character); for( i=0 ; i < N ; i++){ pole[i]=getchar(); } for( i=0 ; i < counter ; i++){ for( j=0 ; j < N ; j++){ putchar(pole[j]); } } } else { putchar(character); } } } int main(){ unsigned int N=4; decomp(N); } ----- END OF CODE --- ----- OUTPUT --- > ./a < out4.txt aaaaa bb ccccccccccc dddd > ./a < out4.txt aaaaa bb ccccccccccc dddd > ./a < out4.txt aaaaa bb ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccc dddd > ./a < out4.txt aaaaa bb ccccccccccc dddd > ------ END OF OUTPUT --- ------ TEST FILE --- aaaaa bb 2ccccccc dddd ------ END OF TEST FILE --- -- merlyn <mer...@merlyn.cz> OpenBSD mail.merlyn.cz 4.7 GENERIC.MP#1 i386 [demime 1.01d removed an attachment of type application/pgp-signature]