aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2012-01-12 16:30:04 +0100
committerJoakim Verona2012-01-12 16:30:04 +0100
commit69a8e78e4d1af91cf50a2870bb8cd9a5794161de (patch)
tree12709dbf3538c8749ef045108c6905c7183d68d6 /src
parent16e9a80c0c3ca5f72f802b92ff5ca1f595a07eca (diff)
downloademacs-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.c23
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;\
833if(!XXWIDGETP(xwidget)) {printf("ERROR not an xwidget\n"); return Qnil;}; \
834if(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
829DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri, Sxwidget_webkit_goto_uri, 2, 2, 0, 843DEFUN ("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
839DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script, Sxwidget_webkit_execute_script, 2, 2, 0, 854DEFUN ("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}