[wp-trac] [WordPress Trac] #49391: small notice in add_query_arg
WordPress Trac
noreply at wordpress.org
Sun Feb 9 23:39:28 UTC 2020
#49391: small notice in add_query_arg
--------------------------+------------------------------
Reporter: quasibrodo | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: General | Version: 5.2.5
Severity: trivial | Resolution:
Keywords: | Focuses:
--------------------------+------------------------------
Description changed by SergeyBiryukov:
Old description:
> Admittedly I noticed this problem on wp 5.2.5 and I do see that the
> function has been updated in 5.3 but in in add_query_arg(), this snippet:
>
> if ( is_array( $args[0] ) ) {
> foreach ( $args[0] as $k => $v ) {
> $qs[ $k ] = $v;
> }
> } else {
> $qs[ $args[0] ] = $args[1]; //this is line 964
> }
>
> produces the following error.
>
> Notice: Undefined offset: 1 in /home/centerforpublich/public_html/wp-
> includes/functions.php on line 964
>
> though I see that line is now 1114 on 5.3.2
>
> I'm not certain if its a flaw with the logic of the function or if its
> being called without the proper arguments but a simple fix that I
> implemented to remove the notice was changing the above snippet to the
> following:
>
> if ( is_array( $args[0] ) ) {
> foreach ( $args[0] as $k => $v ) {
> $qs[ $k ] = $v;
> }
> } else if ( isset( $args[1] ) ) {
> $qs[ $args[0] ] = $args[1];
> }
>
> It seems that for some reason it cannot be assumed that $args[1] will
> always be set.
>
> I hope this helps.
New description:
Admittedly I noticed this problem on wp 5.2.5 and I do see that the
function has been updated in 5.3 but in in add_query_arg(), this snippet:
{{{
if ( is_array( $args[0] ) ) {
foreach ( $args[0] as $k => $v ) {
$qs[ $k ] = $v;
}
} else {
$qs[ $args[0] ] = $args[1]; //this is line 964
}
}}}
produces the following error.
Notice: Undefined offset: 1 in /home/centerforpublich/public_html/wp-
includes/functions.php on line 964
though I see that line is now 1114 on 5.3.2
I'm not certain if its a flaw with the logic of the function or if its
being called without the proper arguments but a simple fix that I
implemented to remove the notice was changing the above snippet to the
following:
{{{
if ( is_array( $args[0] ) ) {
foreach ( $args[0] as $k => $v ) {
$qs[ $k ] = $v;
}
} else if ( isset( $args[1] ) ) {
$qs[ $args[0] ] = $args[1];
}
}}}
It seems that for some reason it cannot be assumed that $args[1] will
always be set.
I hope this helps.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/49391#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list