www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - Bugzilla #113 fix - ineffective code (dmd161)



"src\phobos\std\format.d".

It might be worthwhile to consider re-using original code

code found in the std.format module:


-----------



if (vnumber < base)
{
  if (vnumber == 0 && precision == 0 && flags & FLprecision &&
    !(fc == 'o' && flags & FLhash))
  {
    putstr(null);
    return;
  }
  if (precision == 0 || !(flags & FLprecision))
  { vchar = '0' + vnumber;
    if (vnumber < 10)
      vchar = '0' + vnumber;
    else
      vchar = (uc ? 'A' - 10 : 'a' - 10) + vnumber;
    goto L2;
  }
}

int n = tmpbuf.length;
char c;
int hexoffset = uc ? ('A' - ('9' + 1)) : ('a' - ('9' + 1));

-----------



int hexoffset = uc ? ('A' - ('9' + 1)) : ('a' - ('9' + 1));

if (vnumber < base)
{
  if (vnumber == 0 && precision == 0 && flags & FLprecision &&
    !(fc == 'o' && flags & FLhash))
  {
    putstr(null);
    return;
  }
  if (precision == 0 || !(flags & FLprecision))
  {
    vchar = '0' + vnumber;
    if (vnumber > 9)
      vchar += hexoffset;
    goto L2;
  }
}

int n = tmpbuf.length;
char c;

-----------

Note: The line containing "int hexoffset = ..." needs to be moved
up to line 866, then hexoffset can be used the same way as it is
done already in subsequent parts of the module's code.
Jun 23 2006