antiright-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Antiright-devel] antiright/lib edit.c


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright/lib edit.c
Date: Sun, 29 May 2005 17:54:10 -0400

CVSROOT:        /cvsroot/antiright
Module name:    antiright
Branch:         
Changes by:     Jeffrey Bedard <address@hidden> 05/05/29 21:54:10

Modified files:
        lib            : edit.c 

Log message:
        Fixed two segfaults due to filling nonexistant text.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/antiright/antiright/lib/edit.c.diff?tr1=1.5&tr2=1.6&r1=text&r2=text

Patches:
Index: antiright/lib/edit.c
diff -u antiright/lib/edit.c:1.5 antiright/lib/edit.c:1.6
--- antiright/lib/edit.c:1.5    Sat Feb 12 17:57:41 2005
+++ antiright/lib/edit.c        Sun May 29 21:54:10 2005
@@ -73,12 +73,25 @@
 antiright_comment_selection(Widget widget, 
                            XtPointer client_data, XtPointer call_data)
 {
-  XmTextPosition left, right;
-  XmTextGetSelectionPosition((Widget)client_data, &left, &right);
-  XmTextInsert((Widget)client_data, left, "/* ");
-  XmTextInsert((Widget)client_data, right+3, "  */");
-  widget=NULL;
-  call_data=NULL;
+  printf("FILE_TYPE: %d\n", antiright.workfile_type);
+  if(antiright.workfile_type==C || antiright.workfile_type==H)
+    {
+      XmTextPosition left, right;
+      XmTextGetSelectionPosition((Widget)client_data, &left, &right);
+      XmTextInsert((Widget)client_data, left, "/* ");
+      XmTextInsert((Widget)client_data, right+3, "  */");
+      widget=NULL;
+      call_data=NULL;
+    }
+  else if(antiright.workfile_type==SH)
+    {
+      XmTextPosition left, right;
+      XmTextGetSelectionPosition((Widget)client_data, &left, &right);
+      XmTextInsert((Widget)client_data, left, "# ");
+      /*XmTextInsert((Widget)client_data, right+3, "  #");*/
+      widget=NULL;
+      call_data=NULL;
+    }
 }
 void
 antiright_uncomment_selection(Widget widget,
@@ -161,10 +174,13 @@
   char *selection;
   XmTextPosition left, right;
   XmTextGetSelectionPosition((Widget)client_data, &left, &right);
-  selection=XmTextGetSelection((Widget)client_data);
-  antiright_fill_text(&selection);
-  XmTextReplace((Widget)client_data, left, right, selection);
-  XtFree(selection);
+  if(right!=left)
+    {
+      selection=XmTextGetSelection((Widget)client_data);
+      antiright_fill_text(&selection);
+      XmTextReplace((Widget)client_data, left, right, selection);
+      XtFree(selection);
+    }
   widget=NULL;
   call_data=NULL;
 }
@@ -175,12 +191,15 @@
 {
   char *selection;
   unsigned int right=XmTextGetLastPosition((Widget)client_data);
-  XmTextSetSelection((Widget)client_data, 0, right, 
-                    XtLastTimestampProcessed(antiright.display));
-  selection=XmTextGetSelection((Widget)client_data);
-  antiright_fill_text(&selection);
-  XmTextReplace((Widget)client_data, 0, right, selection);
-  XtFree(selection);
+  if(right!=0)
+    {
+      XmTextSetSelection((Widget)client_data, 0, right, 
+                        XtLastTimestampProcessed(antiright.display));
+      selection=XmTextGetSelection((Widget)client_data);
+      antiright_fill_text(&selection);
+      XmTextReplace((Widget)client_data, 0, right, selection);
+      XtFree(selection);
+    }
   widget=NULL;
   call_data=NULL;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]