diff options
| author | Joakim Verona | 2012-01-12 16:30:04 +0100 |
|---|---|---|
| committer | Joakim Verona | 2012-01-12 16:30:04 +0100 |
| commit | 69a8e78e4d1af91cf50a2870bb8cd9a5794161de (patch) | |
| tree | 12709dbf3538c8749ef045108c6905c7183d68d6 /src | |
| parent | 16e9a80c0c3ca5f72f802b92ff5ca1f595a07eca (diff) | |
| download | emacs-69a8e78e4d1af91cf50a2870bb8cd9a5794161de.tar.gz emacs-69a8e78e4d1af91cf50a2870bb8cd9a5794161de.zip | |
fixes for typechecking to avoid crashes when some webkit functions are called with nil instead of valid webkit obj. intended to make it run on archlinux
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 848e95fca1a..93d7c46a41f 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -826,22 +826,37 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 826 | 826 | ||
| 827 | 827 | ||
| 828 | #ifdef HAVE_WEBKIT_OSR | 828 | #ifdef HAVE_WEBKIT_OSR |
| 829 | |||
| 830 | //FUGLY macro that checks WEBKIT_IS_WEB_VIEW(xw->widget_osr) first | ||
| 831 | #define WEBKIT_FN_INIT() \ | ||
| 832 | struct xwidget* xw;\ | ||
| 833 | if(!XXWIDGETP(xwidget)) {printf("ERROR not an xwidget\n"); return Qnil;}; \ | ||
| 834 | if(Qnil == xwidget) {printf("ERROR xwidget nil\n"); return Qnil;}; \ | ||
| 835 | xw = XXWIDGET(xwidget); \ | ||
| 836 | if(NULL == xw) printf("ERROR xw is 0\n"); \ | ||
| 837 | if((NULL == xw->widget_osr) || !WEBKIT_IS_WEB_VIEW(xw->widget_osr)){ \ | ||
| 838 | printf("ERROR xw->widget_osr does not hold a webkit instance\n");\ | ||
| 839 | return Qnil;\ | ||
| 840 | }; | ||
| 841 | |||
| 842 | |||
| 829 | DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri, Sxwidget_webkit_goto_uri, 2, 2, 0, | 843 | DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri, Sxwidget_webkit_goto_uri, 2, 2, 0, |
| 830 | doc: /* webkit goto uri.*/ | 844 | doc: /* webkit goto uri.*/ |
| 831 | ) | 845 | ) |
| 832 | (Lisp_Object xwidget, Lisp_Object uri) | 846 | (Lisp_Object xwidget, Lisp_Object uri) |
| 833 | { | 847 | { |
| 834 | struct xwidget* xw = XXWIDGET(xwidget); | 848 | WEBKIT_FN_INIT(); |
| 835 | webkit_web_view_load_uri ( WEBKIT_WEB_VIEW(xw->widget_osr), SDATA(uri)); | 849 | webkit_web_view_load_uri ( WEBKIT_WEB_VIEW(xw->widget_osr), SDATA(uri)); |
| 836 | return Qnil; | 850 | return Qnil; |
| 837 | } | 851 | } |
| 838 | 852 | ||
| 853 | |||
| 839 | DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script, 2, 2, 0, | 854 | DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script, 2, 2, 0, |
| 840 | doc: /* webkit exec js.*/ | 855 | doc: /* webkit exec js.*/ |
| 841 | ) | 856 | ) |
| 842 | (Lisp_Object xwidget, Lisp_Object script) | 857 | (Lisp_Object xwidget, Lisp_Object script) |
| 843 | { | 858 | { |
| 844 | struct xwidget* xw = XXWIDGET(xwidget); | 859 | WEBKIT_FN_INIT(); |
| 845 | webkit_web_view_execute_script( WEBKIT_WEB_VIEW(xw->widget_osr), SDATA(script)); | 860 | webkit_web_view_execute_script( WEBKIT_WEB_VIEW(xw->widget_osr), SDATA(script)); |
| 846 | return Qnil; | 861 | return Qnil; |
| 847 | } | 862 | } |
| @@ -852,7 +867,7 @@ DEFUN ("xwidget-webkit-get-title", Fxwidget_webkit_get_title, Sxwidget_webkit_g | |||
| 852 | (Lisp_Object xwidget) | 867 | (Lisp_Object xwidget) |
| 853 | { | 868 | { |
| 854 | //TODO support multibyte strings | 869 | //TODO support multibyte strings |
| 855 | struct xwidget* xw = XXWIDGET(xwidget); | 870 | WEBKIT_FN_INIT(); |
| 856 | const gchar* str=webkit_web_view_get_title( WEBKIT_WEB_VIEW(xw->widget_osr)); | 871 | const gchar* str=webkit_web_view_get_title( WEBKIT_WEB_VIEW(xw->widget_osr)); |
| 857 | //return make_string_from_bytes(str, wcslen((const wchar_t *)str), strlen(str)); | 872 | //return make_string_from_bytes(str, wcslen((const wchar_t *)str), strlen(str)); |
| 858 | if(str == 0){ | 873 | if(str == 0){ |
| @@ -931,7 +946,7 @@ DEFUN ("xwidget-webkit-dom-dump", Fxwidget_webkit_dom_dump, Sxwidget_webkit_dom | |||
| 931 | ) | 946 | ) |
| 932 | (Lisp_Object xwidget) | 947 | (Lisp_Object xwidget) |
| 933 | { | 948 | { |
| 934 | struct xwidget* xw = XXWIDGET(xwidget); | 949 | WEBKIT_FN_INIT(); |
| 935 | xwidget_webkit_dom_dump(WEBKIT_DOM_NODE(webkit_web_view_get_dom_document( WEBKIT_WEB_VIEW(xw->widget_osr)))); | 950 | xwidget_webkit_dom_dump(WEBKIT_DOM_NODE(webkit_web_view_get_dom_document( WEBKIT_WEB_VIEW(xw->widget_osr)))); |
| 936 | return Qnil; | 951 | return Qnil; |
| 937 | } | 952 | } |