apex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Munagala Ramanath <...@datatorrent.com>
Subject Re: Infinite loop in CircularBuffer constructor (corner case)
Date Fri, 23 Dec 2016 02:02:32 GMT
Actually, this will happen whenever the parameter n satisfies: 2**30 < n <=
Integer.MAX_VALUE

Ram

On Thu, Dec 22, 2016 at 5:34 PM, Munagala Ramanath <ram@datatorrent.com>
wrote:

> In Netlet CircularBuffer constructor, we have an infinite loop if the
> first parameter (*n*)
> is *Integer.MAX_VALUE* because the loop counter left-shifts 1 till it
> drops into the sign
> bit at which point the value is negative and fails the loop exit test. The
> next left shift
> yields 0 which, of course, stays that way forever; here is the fragment:
>
> *    int i = 1;*
> *    while (i < n) {*
> *      i <<= 1;*
> *    }*
>
> Ram
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message