Subject: bug#33294: xwidget-insert crashes Emacs

From: Eli Zaretskii <[email-masked]>
Date: Fri, 09 Nov 2018 16:56:41 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked],
>         [email-masked]
> Date: Fri, 09 Nov 2018 08:29:48 -0500
> 
> > Can you tell what are the guidelines for putting a PVEC object into
> > the "impossible" category in the context of type-of?
> 
> The "impossible" category is for when such objects can never be passed
> to `type-of`, typically because they are not available to Elisp.

Well, then 'xwidget' and 'xwidget-view' are definitely NOT
"impossible", since we have make-xwidget and xwidget-view-lookup.

> Accordingly, I just installed the patch below into emacs-26.

You did?

> diff --git a/src/data.c b/src/data.c
> index 8d58cbd941..eea9ccedbb 100644
> --- a/src/data.c
> +++ b/src/data.c
> @@ -276,10 +276,12 @@ for example, (type-of 1) returns `integer'.  */)
>            }
>          case PVEC_MODULE_FUNCTION:
>            return Qmodule_function;
> -        /* "Impossible" cases.  */
>          case PVEC_XWIDGET:
> -        case PVEC_OTHER:
> +          return Qxwidget;
>          case PVEC_XWIDGET_VIEW:
> +          return Qxwidget_view;
> +        /* "Impossible" cases.  */
> +        case PVEC_OTHER:
>          case PVEC_SUB_CHAR_TABLE:
>          case PVEC_FREE: ;
>          }
> @@ -3756,6 +3758,8 @@ syms_of_data (void)
>    DEFSYM (Qfont_entity, "font-entity");
>    DEFSYM (Qfont_object, "font-object");
>    DEFSYM (Qterminal, "terminal");
> +  DEFSYM (Qxwidget, "xwidget");
> +  DEFSYM (Qxwidget_view, "xwidget-view");
>  
>    DEFSYM (Qdefun, "defun");

Evgeny, does this patch solve your original problem?