Revision: 651
          http://rpy.svn.sourceforge.net/rpy/?rev=651&view=rev
Author:   lgautier
Date:     2008-09-07 10:51:28 +0000 (Sun, 07 Sep 2008)

Log Message:
-----------
- rinterface.str_typeint() was causing segfault when called with 
99

- (tentative) fix for subsetting LANGSXP objects

Modified Paths:
--------------
    branches/rpy_nextgen/NEWS
    branches/rpy_nextgen/rpy/rinterface/rinterface.c
    branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py

Modified: branches/rpy_nextgen/NEWS
===================================================================
--- branches/rpy_nextgen/NEWS   2008-09-04 13:41:55 UTC (rev 650)
+++ branches/rpy_nextgen/NEWS   2008-09-07 10:51:28 UTC (rev 651)
@@ -37,7 +37,11 @@
 
 - added a MANIFEST.in ensuring that headers get included in the source 
distribution
 
+- :func:`rinterface.str_typeint` was causing segfault when called with 99
 
+- fixed subsetting for LANGSXP objects
+
+
 Release 2.0.0a3
 ===============
 

Modified: branches/rpy_nextgen/rpy/rinterface/rinterface.c
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-09-04 13:41:55 UTC 
(rev 650)
+++ branches/rpy_nextgen/rpy/rinterface/rinterface.c    2008-09-07 10:51:28 UTC 
(rev 651)
@@ -683,7 +683,7 @@
  return PyBool_FromLong(same);
 }
 PyDoc_STRVAR(Sexp_rsame_doc,
-            "Are the two object representing the same underlying R object.");
+            "Is the given object representing the same underlying R object as 
the instance.");
 
 
 static PyMethodDef Sexp_methods[] = {
@@ -1449,6 +1449,7 @@
       break;
     case LANGSXP:
       tmp = nthcdr(*sexp, i_R);
+      sexp_item = allocVector(LANGSXP, 1);
       SETCAR(sexp_item, CAR(tmp));
       SET_TAG(sexp_item, TAG(tmp));
       res = (PyObject *)newPySexpObject(sexp_item);
@@ -2352,7 +2353,7 @@
 
   const char *sexp_type = validSexpType[sexp_i];
 
-  if ((sexp_i < 0) || (sexp_i > maxValidSexpType) || (! sexp_type)) {
+  if ((sexp_i < 0) || (sexp_i >= maxValidSexpType) || (! sexp_type)) {
 
     PyErr_Format(PyExc_LookupError, "'%i' is not a valid SEXP value.", sexp_i);
     return NULL;

Modified: branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py 2008-09-04 
13:41:55 UTC (rev 650)
+++ branches/rpy_nextgen/rpy/rinterface/tests/test_EmbeddedR.py 2008-09-07 
10:51:28 UTC (rev 651)
@@ -38,7 +38,10 @@
         t = rinterface.baseNameSpaceEnv['pi']
         self.assertEquals('REALSXP', rinterface.str_typeint(t.typeof))
 
+    def testStr_typeint_invalid(self):
+        self.assertRaises(LookupError, rinterface.str_typeint, 99)
 
+
 class ObjectDispatchTestCase(unittest.TestCase):
     def testObjectDispatchLang(self):
         formula = rinterface.globalEnv.get('formula')


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to