php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #14966 round() function doesn't always work
Submitted: 2002-01-10 09:53 UTC Modified: 2002-04-01 04:21 UTC
From: rpb at community dot net dot uk Assigned:
Status: Closed Package: *Math Functions
PHP Version: 4.0.6 OS: Compaq Tru64 v4.0E
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: rpb at community dot net dot uk
New email:
PHP Version: OS:

 

 [2002-01-10 09:53 UTC] rpb at community dot net dot uk
If PHP is built without complete ANSI C prototypes in scope the 'round' function can fail.

This is because the second argument to 'pow' in ext/standard/math.c:143 is an integer, and without prototypes it doesn't receive its implicit cast to a double, causing the 'pow' function to receive an undefined value on the stack.

The simple fix is to put an explicit (double) cast in:

    f = pow(10.0, (double)places);

A better fix might be to ensure that the ANSI version of the prototypes from <math.h> are always in scope, but that may be difficult to achieve across a wide variety of systems.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-01-10 09:54 UTC] rpb at community dot net dot uk
The same code is used in PHP 4.1.1, BTW.

 [2002-04-01 04:21 UTC] derick@php.net
Fixed in CVS, for both 4.2.x and 4.3.x

Derick
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 03:01:28 2024 UTC