Skip to content

Commit

Permalink
Skip json_last_error check when JSON_THROW_ON_ERROR flag is set i…
Browse files Browse the repository at this point in the history
…n `json_decode`
  • Loading branch information
marmichalski authored and staabm committed Nov 28, 2024
1 parent 4b73aa4 commit 710b6aa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/special_cases.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
function json_decode(string $json, bool $assoc = false, int $depth = 512, int $flags = 0): mixed
{
$data = \json_decode($json, $assoc, $depth, $flags);
if (JSON_ERROR_NONE !== json_last_error()) {
if (!($flags & JSON_THROW_ON_ERROR) && JSON_ERROR_NONE !== json_last_error()) {
throw JsonException::createFromPhpError();
}
return $data;
Expand Down
16 changes: 16 additions & 0 deletions tests/JsonDecodeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

declare(strict_types=1);

use PHPUnit\Framework\TestCase;

final class JsonDecodeTest extends TestCase
{
public function testJsonLastErrorIsNotCheckedIfFlagIsSet(): void
{
\json_decode('{');
self::assertNotSame(JSON_ERROR_NONE, \json_last_error());

\Safe\json_decode('[]', flags: \JSON_THROW_ON_ERROR);
}
}

0 comments on commit 710b6aa

Please sign in to comment.