PR# 14495 Incorrect omparison `num - cap <= 0' in run_idr.c

Problem Report Summary
Submitter: prestoat2000
Category: Runtime
Priority: Low
Date: 2008/06/19
Class: Bug
Severity: Non-critical
Number: 14495
Release: 6.2.73895
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.13) Gecko/20080328 Firefox/2.0.0.13 Solaris 10 on SPARC
Synopsis: Incorrect omparison `num - cap <= 0' in run_idr.c

Description
Based on warnings from lint and a small test program, it appears that every
check in run_idr.c that looks like

   if ((num - cap) <= 0)

is incorrect, because `num' and `cap' are both of type size_t, which is an
unsigned type.  The comparison will only ever be true if num == cap, which
is unlikely in most cases.  I confirmed this with the attached C test program.

These 8 comparisons should be rewritten

   if (num <= cap)

Before doing this, you should check the statements in the "if" branch, since
they may never have been executed and so might have bugs.

The bug doesn't look too harmful, except for a very small amount of wasted CPU.
To Reproduce

										
Problem Report Interactions
From:manus_eiffel    Date:2009/04/01    Status: Closed    Download   
It is now fixed in rev#78021. The code was previously used extensively before that change from `int' to `size_t' in 2004 for supporting 64-bit platforms.

From:prestoat2000    Date:2008/06/19    Download   
Attachments for problem report #14495

Attachment: test87.c     Size:618