On Wed, May 25, 2005 at 12:30:35AM -0700, Nate Eldredge wrote:
> UInt16 record_id;
> 
> for(record_id=0;record_id<DmNumRecords(ref);record_id++) {
>       rec_h = DmQueryRecord(ref, record_id);
>       ...
>         if(...) {
>               DmRemoveRecord(ref, record_id);
>         }
> }
> 
> This looks highly suspicious to me.  I can't believe that the record id's
> are guaranteed to be sequential.  

DmQueryRecord takes a record index (numbered from zero) as its second
parameter. So while the record_id is sequential, the variable is
mis-named; it should be named record_ndx.

However, the code is suspicious because deleting records will cause the
index of subsequent records to be shifted. It should really loop from
DmNumRecords()-1 down to zero.

-- 
Dave Carrigan
Seattle, WA, USA
[EMAIL PROTECTED] | http://www.rudedog.org/ | ICQ:161669680
UNIX-Apache-Perl-Linux-Firewalls-LDAP-C-C++-DNS-PalmOS-PostgreSQL-MySQL

-- 
For information on using the PalmSource Developer Forums, or to unsubscribe, 
please see http://www.palmos.com/dev/support/forums/

Reply via email to