Skip to content

Commit c21d575

Browse files
authored
fix(Debug): treat zero time as valid timer start (#10569)
* fix(Debug): treat zero time as valid timer start * test: use assertEqualsWithDelta for timer start value in TimerTest * docs: sort v4.7.5 changelog alphabetically
1 parent 42d75a9 commit c21d575

3 files changed

Lines changed: 15 additions & 4 deletions

File tree

‎system/Debug/Timer.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Timer
4646
public function start(string $name, ?float $time = null)
4747
{
4848
$this->timers[strtolower($name)] = [
49-
'start' => $time === null || $time === 0.0 ? microtime(true) : $time,
49+
'start' => $time ?? microtime(true),
5050
'end' => null,
5151
];
5252

‎tests/system/Debug/TimerTest.php‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ public function testElapsedTimeGivesSameResultAsTimersArray(): void
8686
$this->assertSame($expected, $timer->getElapsedTime('test1'));
8787
}
8888

89+
public function testStartWithZeroTime(): void
90+
{
91+
$timer = new Timer();
92+
$timer->start('test1', 0.0);
93+
94+
$timers = $timer->getTimers();
95+
96+
$this->assertEqualsWithDelta(0.0, $timers['test1']['start'], PHP_FLOAT_EPSILON);
97+
}
98+
8999
public function testThrowsExceptionStoppingNonTimer(): void
90100
{
91101
$this->expectException('RunTimeException');

‎user_guide_src/source/changelogs/v4.7.5.rst‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ Message Changes
1919
***************
2020

2121
- Added the ``CLI.generator.undefinedDatabaseGroup`` and ``CLI.generator.unsupportedSessionDriver`` language strings.
22-
- Added the ``Cookie.invalidCookieValue`` language string.
23-
- Added the ``Cookie.invalidCookiePath`` language string.
2422
- Added the ``Cookie.invalidCookieDomain`` language string.
23+
- Added the ``Cookie.invalidCookiePath`` language string.
24+
- Added the ``Cookie.invalidCookieValue`` language string.
2525

2626
*******
2727
Changes
@@ -41,6 +41,7 @@ Bugs Fixed
4141

4242
- **Autoloader:** Fixed a bug where ``FileLocatorCached::deleteCache()`` left the deleted data in memory, so it could be written back to the cache file on shutdown. ``spark optimize`` and ``spark cache:clear`` now clear the shared locator's cache instead of a separate instance.
4343
- **BaseModel:** Fixed a bug where auto-generated ``created_at``/``updated_at`` timestamps always rendered ``.000000`` for a ``'datetime'`` ``$dateFormat`` whose connection ``dateFormat`` mask includes ``.v``/``.u``, instead of the real sub-second value.
44+
- **Cache:** Fixed ``MemcachedHandler::decrement()`` initializing a non-existent counter to the positive offset. Missing counters are now initialized to ``0``, reflecting Memcached's unsigned, saturating counter semantics.
4445
- **CLI:** Fixed a bug where pressing backspace in a ``CLI::prompt()`` erased the prompt text when the ``readline`` extension is enabled. The prompt is now passed to ``readline()`` so line redraws repaint it.
4546
ANSI color codes in the prompt (e.g., option defaults) are wrapped in readline's non-printing markers under GNU readline so cursor positioning stays accurate.
4647
On Windows, where the ``readline`` extension is built on WinEditLine, the prompt is written to STDOUT first because WinEditLine reports no library version and prints ANSI sequences literally.
@@ -52,12 +53,12 @@ Bugs Fixed
5253
- **Cookie:** Fixed a bug where ``Cookie`` instances created with ``raw: true`` allowed invalid characters in cookie values rejected by ``setrawcookie()``.
5354
- **Cookie:** Fixed a bug where ``Cookie`` instances allowed invalid characters in path, domain, and prefix attributes rejected by ``setcookie()`` and ``setrawcookie()``.
5455
- **Database:** Fixed a bug where rebuilding a SQLite3 table (e.g., ``Forge::dropColumn()``, ``Forge::modifyColumn()``, ``Forge::dropForeignKey()`` and ``Forge::dropPrimaryKey()``) corrupted the table names referenced by its foreign keys when ``DBPrefix`` was set.
56+
- **Debug:** Fixed a bug where ``Timer::start()`` treated ``0.0`` as an empty value and substituted the current time.
5557
- **Files:** Fixed a bug where ``File::move()`` and ``UploadedFile::move()`` set executable and overly permissive file permissions (``0777 & ~umask()`` instead of ``0666 & ~umask()``), and ``UploadedFile::move()`` targeted the parent directory instead of the destination file for ``chmod()``.
5658
- **Helpers:** Fixed a bug where ``get_dir_file_info()`` returned incomplete entries for subdirectories and missing files instead of omitting them.
5759
- **Honeypot:** Fixed a bug where bot detection returned an HTTP 500 response instead of 403 (Forbidden).
5860
- **I18n:** Fixed a bug where ``Time::today()``, ``Time::yesterday()``, and ``Time::tomorrow()`` ignored the specified ``$timezone`` and ``setTestNow()`` when calculating the day.
5961
- **Logger:** Fixed a bug where interpolating a log message with array or non-stringable context values could raise PHP warnings or errors.
60-
- **Cache:** Fixed ``MemcachedHandler::decrement()`` initializing a non-existent counter to the positive offset. Missing counters are now initialized to ``0``, reflecting Memcached's unsigned, saturating counter semantics.
6162

6263
See the repo's
6364
`CHANGELOG.md <https://github.com/codeigniter4/CodeIgniter4/blob/develop/CHANGELOG.md>`_

0 commit comments

Comments
 (0)