[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