<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to bugs</title><link href="https://sourceforge.net/p/onboardc/bugs/" rel="alternate"/><link href="https://sourceforge.net/p/onboardc/bugs/feed.atom" rel="self"/><id>https://sourceforge.net/p/onboardc/bugs/</id><updated>2008-07-19T08:10:45Z</updated><subtitle>Recent changes to bugs</subtitle><entry><title>TimSecondsToDateTime problem</title><link href="https://sourceforge.net/p/onboardc/bugs/99/" rel="alternate"/><published>2008-07-19T08:10:45Z</published><updated>2008-07-19T08:10:45Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net00a442398652c87a7ebd1f3031aaadf81331dfac</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Using OS 4.1 on Palm M130 (in emulator)&lt;br /&gt;
Onboard C version 2.51&lt;/p&gt;
&lt;p&gt;Doing &lt;/p&gt;
&lt;p&gt;DateTimePtr dtP;&lt;/p&gt;
&lt;p&gt;FrmAlert(GetsToHere);&lt;br /&gt;
TimSecondsToDateTime(TimGetSeconds(),dtP);&lt;br /&gt;
FrmAlert(NotGetToHere);&lt;/p&gt;
&lt;p&gt;Nothing fancy as you can see&lt;/p&gt;
&lt;p&gt;Code works on earlier OS versions fine but in OS 4.1&lt;br /&gt;
get emulator message&lt;/p&gt;
&lt;p&gt;"...wrote to memory location 0x002635DC, which is in the&lt;br /&gt;
storage heap. In order to protect the integrity of the user's data such direct access is not allowed. Instead, applications should use special Palm OS functions ..."&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>macro expansion bug (infinite loop)</title><link href="https://sourceforge.net/p/onboardc/bugs/98/" rel="alternate"/><published>2008-07-15T12:00:11Z</published><updated>2008-07-15T12:00:11Z</updated><author><name>Lincoln Ramsay</name><uri>https://sourceforge.net/u/a1291762/</uri></author><id>https://sourceforge.net4b63b2ce574b0877abe00f5c17192456a7c60b54</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I wrote this innocuous-looking code...&lt;/p&gt;
&lt;p&gt;UInt32 ref;&lt;br /&gt;
UInt32 time;&lt;br /&gt;
// set ref and time&lt;br /&gt;
AlmSetProcAlarm(MyFunc, ref, time);&lt;/p&gt;
&lt;p&gt;This causes a hang. It turns out it's an infinite loop.&lt;/p&gt;
&lt;p&gt;The problem is that the AlmSetProcAlarm macro uses 'ref' as the second argument. There is a check in the code to handle 'recursive' arguments like this but since I put a space after the comma, this code was foiled.&lt;/p&gt;
&lt;p&gt;I have a work around for this (skip over any white space before doing the recursive check) that seems to work fine (both in POSE and onboard).&lt;/p&gt;
&lt;p&gt;I've put up a binary for testing at the usual location.&lt;br /&gt;
&lt;a href="http://ramsay.webhop.org/OnBoard.zip" rel="nofollow"&gt;http://ramsay.webhop.org/OnBoard.zip&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Crash on bad func ptr typedef</title><link href="https://sourceforge.net/p/onboardc/bugs/97/" rel="alternate"/><published>2008-05-27T21:14:11Z</published><updated>2008-05-27T21:14:11Z</updated><author><name>Lincoln Ramsay</name><uri>https://sourceforge.net/u/a1291762/</uri></author><id>https://sourceforge.netcfc771077279b29d36ac48450baae547aca95869</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Reported by Gareth on the Yahoo list.&lt;/p&gt;
&lt;p&gt;...&lt;br /&gt;
Basically the line:&lt;/p&gt;
&lt;p&gt;typedef Boolean (FormGadgetHandlerType) (struct FormGadgetType &lt;br /&gt;
*gadgetP, UInt16 cmd, void *paramP);&lt;/p&gt;
&lt;p&gt;was causing the crash. &lt;/p&gt;
&lt;p&gt;I changed it to &lt;/p&gt;
&lt;p&gt;typedef Boolean (FormGadgetHandlerType*) (struct FormGadgetType &lt;br /&gt;
*gadgetP, UInt16 cmd, void *paramP);&lt;/p&gt;
&lt;p&gt;and it compiled fine. It was definitely compile time not runtime.&lt;br /&gt;
...&lt;/p&gt;
&lt;p&gt;My take on this is that this should be a callback declaration but instead of being a function pointer, it's a regular function and this is probably causing havoc. This really shouldn't crash if we can help it.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>OnBoard updates protected and locked resources</title><link href="https://sourceforge.net/p/onboardc/bugs/96/" rel="alternate"/><published>2008-05-14T14:29:28Z</published><updated>2008-05-14T14:29:28Z</updated><author><name>Lincoln Ramsay</name><uri>https://sourceforge.net/u/a1291762/</uri></author><id>https://sourceforge.net2e8614574abd8b7d11a69e5e8a07c4b43fc823e8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;OnBoard does not remove the app it is building. If the app already exists, a few key resources are removed and then everything is just copied in.&lt;/p&gt;
&lt;p&gt;This has a few problems (eg. can end up with stale crap in the binary that shouldn't be there).&lt;/p&gt;
&lt;p&gt;The most annoying and damaging behaviour though is that apps that are protected and locked seem to be overwritten quite happily by OnBoard. My own app (AttnGrab) now has code specifically designed to detect when this has happend so that the device can be reset (it's the only way to avoid a potentially damaging crash).&lt;/p&gt;
&lt;p&gt;Firstly, I think that OnBoard should completely remove an app before it creates it. This should not be a Launcher-style delete (that's covered by &amp;lt;a href="https://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=922486&amp;amp;group_id=55794&amp;amp;atid=500573"&amp;gt;this task&amp;lt;/a&amp;gt;) but a Filez-style delete.&lt;/p&gt;
&lt;p&gt;To prevent the problems I've seen with my app, OnBoard should first see if the app is protected and issue a delete signal as the Launcher does (so that the app can de-register any alarms and notifications and unlock resources). Once the app is no longer protected, the compile can go ahead (it should abort or prompt the user if it the app does not become unprotected).&lt;/p&gt;
&lt;p&gt;For bonus points, OnBoard could check to ensure that there are no more alarms/notifications for the app (especially proc-based ones) or locked resources. Clearly though, there's a limit to how much good this will do. If your app doesn't clean up when you get a delete signal, you're screwed when you delete via the launcher anyway.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>sizeof() bug</title><link href="https://sourceforge.net/p/onboardc/bugs/95/" rel="alternate"/><published>2007-02-20T17:12:33Z</published><updated>2007-02-20T17:12:33Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net2777951f2303cc918e1a3b65191204ba34545da0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;typedef struct {&lt;br /&gt;
UInt32 P[18];&lt;br /&gt;
UInt32 fieldInfo;&lt;br /&gt;
UInt32 S[4][256];&lt;br /&gt;
} bf_ctx;&lt;/p&gt;
&lt;p&gt;sizeof(bf_ctx) returns -1 instead of 4172.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Float problem</title><link href="https://sourceforge.net/p/onboardc/bugs/94/" rel="alternate"/><published>2006-12-21T15:30:31Z</published><updated>2006-12-21T15:30:31Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net8d32cd527f95490bae4cc76a8ddef826dcd701c6</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;float fkNumber = 123.45;&lt;br /&gt;
Char str[40];&lt;/p&gt;
&lt;p&gt;StrIToA(str, (Int32) flNumber);&lt;/p&gt;
&lt;p&gt;// the .45 appears to be lost in flNumber after the above stmt.  ie flNumber now is 123.0&lt;/p&gt;
&lt;p&gt;// am I missing something?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Arrays of function pointers not supported</title><link href="https://sourceforge.net/p/onboardc/bugs/93/" rel="alternate"/><published>2006-10-05T16:41:04Z</published><updated>2006-10-05T16:41:04Z</updated><author><name>Steve Little</name><uri>https://sourceforge.net/u/userid-583634/</uri></author><id>https://sourceforge.netaa31de57f83703d4886e73a6e45c43fb24acea31</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;--- In OnBoardC@yahoogroups.com, Sébastien MARQUE &lt;br /&gt;
&amp;lt;seb.marque@...&amp;gt; wrote:&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; but one day I tried to create arrays of functions &lt;br /&gt;
pointers. with no &lt;br /&gt;
&amp;gt; success, I just did it again to give here the error &lt;br /&gt;
messages I get: the &lt;br /&gt;
&amp;gt; parser says nothing, but when assembling it says &lt;br /&gt;
something like &lt;br /&gt;
&amp;gt; "undefined global data label xyz" where xyz is &lt;br /&gt;
garbage, and then "global &lt;br /&gt;
&amp;gt; fixup to unknown datal label", and then "output &lt;br /&gt;
incomplete"&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; here's my try:&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;    typedef Boolean (*ptrfunctype)(FormPtr);&lt;br /&gt;
&amp;gt;    ptrfunctype ptrfunc[3] = {&lt;br /&gt;
&amp;gt;        funcA,&lt;br /&gt;
&amp;gt;        funcB,&lt;br /&gt;
&amp;gt;        funcC&lt;br /&gt;
&amp;gt;    };&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;    Boolean funcA (FormPtr pForm) {&lt;br /&gt;
&amp;gt;    ...&lt;br /&gt;
&amp;gt;        return true;&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt;    Boolean funcB (FormPtr pForm) {&lt;br /&gt;
&amp;gt;    ...&lt;br /&gt;
&amp;gt;        return true;&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt;    Boolean funcC (FormPtr pForm) {&lt;br /&gt;
&amp;gt;    ...&lt;br /&gt;
&amp;gt;        return true;&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;    Boolean SomeThing (UInt16 style, FormPtr &lt;br /&gt;
pForm) {&lt;br /&gt;
&amp;gt;    ...&lt;br /&gt;
&amp;gt;        // possible style values: 0, 1, 2&lt;br /&gt;
&amp;gt;        return (ptrfunc[style])(pForm);&lt;br /&gt;
&amp;gt;    }&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; sure there is a error and it is possible to do, I've &lt;br /&gt;
tried different &lt;br /&gt;
&amp;gt; ways with pointers to function but after a while I &lt;br /&gt;
decided to abandon &lt;br /&gt;
&amp;gt; and choose an other way to do my stuff ;)&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; seb&lt;br /&gt;
&amp;gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Static array initializer wrong</title><link href="https://sourceforge.net/p/onboardc/bugs/92/" rel="alternate"/><published>2006-09-25T15:01:26Z</published><updated>2006-09-25T15:01:26Z</updated><author><name>Jerramy Gipson</name><uri>https://sourceforge.net/u/userid-1048900/</uri></author><id>https://sourceforge.net060d4b280e51838e0159a6d5b29ad5b95159596f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;When initializing a 2D array will incomplete lists, &lt;br /&gt;
the next list is loaded in the wrong spot.&lt;/p&gt;
&lt;p&gt;&amp;lt;PRE&amp;gt;&lt;br /&gt;
Uint16 array2D[10]10] =&lt;br /&gt;
{&lt;br /&gt;
{1,2,3,4},&lt;br /&gt;
{5,6,7,8},&lt;br /&gt;
{9,0}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/p&gt;
&lt;p&gt;should load the array to be:&lt;br /&gt;
1 2 3 4 0 0 0 0 0 0&lt;br /&gt;
5 6 7 8 0 0 0 0 0 0&lt;br /&gt;
9 0 0 0 0 0 0 0 0 0&lt;br /&gt;
0 0 0 0 0 0 0 0 0 0&lt;br /&gt;
...&lt;/p&gt;
&lt;p&gt;but instead loads it thusly:&lt;br /&gt;
1 2 3 4 5 6 7 8 9 0&lt;br /&gt;
0 0 0 0 0 0 0 0 0 0&lt;br /&gt;
...&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Pointer Math (?)</title><link href="https://sourceforge.net/p/onboardc/bugs/91/" rel="alternate"/><published>2006-09-07T00:58:08Z</published><updated>2006-09-07T00:58:08Z</updated><author><name>Ken Mankoff</name><uri>https://sourceforge.net/u/mankoff/</uri></author><id>https://sourceforge.netaea7dc8fc9d9666ef9137797add8c9d2632f4c90</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Please improve the Summary if someone has a better&lt;br /&gt;
understanding of this.&lt;/p&gt;
&lt;p&gt;I have the following function. It will not compile.&lt;br /&gt;
This is not cut-and-pasted so please email me if you're&lt;br /&gt;
working on this bug and want help.&lt;/p&gt;
&lt;p&gt;Boolean foo(const UTF8 *source, const UTF8 *sourceEnd) {&lt;br /&gt;
int length = bar[*source]+1;&lt;br /&gt;
if (source + length &amp;gt; sourceEnd) {&lt;br /&gt;
return false;&lt;br /&gt;
}&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;The error occurs on the source+length line. If I change&lt;br /&gt;
it to the following it does compile. I have yet to&lt;br /&gt;
completely verify this fix as valid.&lt;/p&gt;
&lt;p&gt;Boolean foo(const UTF8 *source, const UTF8 *sourceEnd) {&lt;br /&gt;
int length = bar[*source]+1;&lt;br /&gt;
UTF8 *spl = source + length;&lt;br /&gt;
if ( spl &amp;gt; sourceEnd ) {&lt;br /&gt;
//if (source + length &amp;gt; sourceEnd) {&lt;br /&gt;
return false;&lt;br /&gt;
}&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;elsewhere: typedef UInt8 UTF8;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>UL type not recognized</title><link href="https://sourceforge.net/p/onboardc/bugs/90/" rel="alternate"/><published>2006-09-07T00:51:54Z</published><updated>2006-09-07T00:51:54Z</updated><author><name>Ken Mankoff</name><uri>https://sourceforge.net/u/mankoff/</uri></author><id>https://sourceforge.net898077f2d236d841521979af1c06fbd0411691da</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;static UTF32 offsetsFromUTF8[6] = { 0x00000000UL,&lt;br /&gt;
0x00003080UL, 0x000E2080UL, 0x03C82080UL, 0XFA02080UL,&lt;br /&gt;
0x2082080UL };                  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Produces the following error:&lt;/p&gt;
&lt;p&gt;======================                              &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Unexpected token while                              &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;waiting for a unary                                 &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;expression, line XX                                     &lt;br /&gt;
(OK) (Goto)                                         &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;----------------------                              &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If "UL" is removed it then compiles.                &lt;br /&gt;
&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>