There is an attached predict.c zip file in the Files section that fixes the crashes seen when you are running the newer versions of linux. I.E. Ubuntu 9.04 of 9.10 or Mint just to name a few.
Henk was kind enough to look at the crash files I sent to him and identify the problem and he made the fix.
Its not a library issue but a limit issue.
In predict.c there are two local arrays called el_s and ez_s with size 10; this is just too small to hold the maximum number of a 32 bit int which is 10 characters long. There needs to be a trailing \0 after the number so the size should be at least 11. I will set it to 18 in the next version which is supposed to fit any number format on 32 bit machines; any way it should hold the unsigned long in any case. Anyway, the modern compiler checks for out of bound writing and detects it; older compilers did not check so I got away with it undetected. It is a bug anyway.
In the mean time I have Ubuntu 9.10 running and can reproduce the
I found another problem in the same part of the code, the size for
sat_object is way too small. Change line 1558 to:
char string, sat_object[MAX_MESSAGE_LENGTH+1], heading_s;
Sending data in kiss.c is a "best effort" attempt, so there is no
checking if writing to the serial port actually worked since there is
noting to do about it when it fails anyway. In predict.c it is just a
bit lazy programming, there is no reason why fgets should fail so the
implementor left the check out. Not realy defensive programming. Also
here it is hard to find out what to do if it fails. These calles are in
reading the sat file (and update file) so its no problem for long term
Attached you find the modified predict.c file. Try that, it should work now.