jycli       2004/02/10 14:28:04

  Modified:    java/src/org/apache/xalan/xsltc/compiler RoundCall.java
               java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
  Log:
  Fix for bugzilla bug report 24111.
  
  The string values for both positive and nagative zero are 0. However,
  a number div 0 returns Infinity, a number div -0 returns -Infinity.
  
  Revision  Changes    Path
  1.7       +4 -14     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RoundCall.java
  
  Index: RoundCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/RoundCall.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- RoundCall.java    30 Jan 2003 18:46:01 -0000      1.6
  +++ RoundCall.java    10 Feb 2004 22:28:04 -0000      1.7
  @@ -65,9 +65,7 @@
   
   import java.util.Vector;
   
  -import org.apache.bcel.generic.BranchHandle;
   import org.apache.bcel.generic.ConstantPoolGen;
  -import org.apache.bcel.generic.IFNE;
   import org.apache.bcel.generic.INVOKESTATIC;
   import org.apache.bcel.generic.InstructionList;
   import org.apache.xalan.xsltc.compiler.util.ClassGenerator;
  @@ -84,16 +82,8 @@
        final InstructionList il = methodGen.getInstructionList();
   
        // Get two copies of the argument on the stack
  -     argument().translate(classGen, methodGen);
  -     il.append(DUP2);
  -
  -     // Check if the argument is NaN
  -     il.append(new INVOKESTATIC(cpg.addMethodref("java.lang.Double",
  -                                                 "isNaN", "(D)Z")));
  -     final BranchHandle skip = il.append(new IFNE(null));
  -     il.append(new INVOKESTATIC(cpg.addMethodref(MATH_CLASS,
  -                                                 "round", "(D)J")));
  -     il.append(L2D);
  -     skip.setTarget(il.append(NOP));
  +        argument().translate(classGen, methodGen);    
  +                il.append(new 
INVOKESTATIC(cpg.addMethodref(BASIS_LIBRARY_CLASS,
  +                                                            "roundF", 
"(D)D")));
       }
   }
  
  
  
  1.69      +10 -1     
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java
  
  Index: BasisLibrary.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- BasisLibrary.java 14 Jan 2004 20:20:04 -0000      1.68
  +++ BasisLibrary.java 10 Feb 2004 22:28:04 -0000      1.69
  @@ -228,6 +228,15 @@
       }
   
       /**
  +     * XSLT Standard function round()
  +     */
  +    public static double roundF(double d) {
  +            if (d >= -0.5 && d < 0) return -0.0;
  +            if (d == 0.0) return d;
  +            else return Math.floor(d + 0.5);
  +    }
  +
  +    /**
        * XSLT Standard function boolean()
        */
       public static boolean booleanF(Object obj) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to