[wp-trac] [WordPress Trac] #60762: WP_Navigation_Block_Renderer::get_markup_for_inner_block() can return null causing PHP8 error

WordPress Trac noreply at wordpress.org
Tue Mar 12 19:54:54 UTC 2024


#60762: WP_Navigation_Block_Renderer::get_markup_for_inner_block() can return null
causing PHP8 error
-----------------------------+------------------------------
 Reporter:  afragen          |       Owner:  (none)
     Type:  defect (bug)     |      Status:  new
 Priority:  highest omg bbq  |   Milestone:  Awaiting Review
Component:  Editor           |     Version:  trunk
 Severity:  major            |  Resolution:
 Keywords:                   |     Focuses:
-----------------------------+------------------------------
Description changed by afragen:

Old description:

> `class-wp-html-tag-processor.php on line 876` can have an null value
> passed to `strlen()` as `$this->html` resulting in a PHP8 error.
>
> This seems to have originated from a change in
> https://github.com/WordPress/wordpress-
> develop/commit/1f8bb9fb333f5a5fb955d1a2298a00b6443eacc8#diff-
> 1bea3165bce53d53ac51db1b623291fcd75ca59e08ec124df652312329160685L143-R169
> where static::get_markup_for_inner_block( $inner_block ) can return null.
>
> If the function is changed from
>

> {{{
> private static function get_markup_for_inner_block( $inner_block ) {
>         $inner_block_content = $inner_block->render();
>         if ( ! empty( $inner_block_content ) ) {
>                 if ( static::does_block_need_a_list_item_wrapper(
> $inner_block ) ) {
>                         return '<li class="wp-block-navigation-item">' .
> $inner_block_content . '</li>';
>                 }
>                 return $inner_block_content;
>         }
> }
> }}}
>

> to the following, this is mitigated.
>
> {{{
> private static function get_markup_for_inner_block( $inner_block ) {
>         $inner_block_content = $inner_block->render();
>         if ( ! empty( $inner_block_content ) ) {
>                 if ( static::does_block_need_a_list_item_wrapper(
> $inner_block ) ) {
>                         return '<li class="wp-block-navigation-item">' .
> $inner_block_content . '</li>';
>                 }
>         } else {
>                 $inner_block_content = '';
>         }
>
>         return $inner_block_content;
> }
> }}}

New description:

 `class-wp-html-tag-processor.php on line 876` can have an null value
 passed to `strlen()` as `$this->html` resulting in a PHP8 error.

 This seems to have originated from a change in
 https://github.com/WordPress/wordpress-
 develop/commit/1f8bb9fb333f5a5fb955d1a2298a00b6443eacc8#diff-
 1bea3165bce53d53ac51db1b623291fcd75ca59e08ec124df652312329160685L143-R169
 where static::get_markup_for_inner_block( $inner_block ) can return null
 instead of an empty string.

 If the function is changed from


 {{{
 private static function get_markup_for_inner_block( $inner_block ) {
         $inner_block_content = $inner_block->render();
         if ( ! empty( $inner_block_content ) ) {
                 if ( static::does_block_need_a_list_item_wrapper(
 $inner_block ) ) {
                         return '<li class="wp-block-navigation-item">' .
 $inner_block_content . '</li>';
                 }
                 return $inner_block_content;
         }
 }
 }}}


 to the following, this is mitigated.

 {{{
 private static function get_markup_for_inner_block( $inner_block ) {
         $inner_block_content = $inner_block->render();
         if ( ! empty( $inner_block_content ) ) {
                 if ( static::does_block_need_a_list_item_wrapper(
 $inner_block ) ) {
                         return '<li class="wp-block-navigation-item">' .
 $inner_block_content . '</li>';
                 }
         } else {
                 $inner_block_content = '';
         }

         return $inner_block_content;
 }
 }}}

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/60762#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list