Thanks for the response, Gregory. But I need a bit more help.

So far I am using the test python code

from rpy import r
r.print_(u'')
r.print_(u' ')

By inserting print statements into the RPy C code (rpymodule.c), I have 
determined that every time RPy accesses an R object, it goes through the C 
function Robj_call, which calls make_args, which in turn calls to_Robj. For 
some reason to_Robj thinks that the unicode string is a sequence, so 
PySequence_Check returns TRUE and thus seq_to_R(obj) gets called. The problem 
is that seq_to_R calls to_Robj, which causes an infinite loop and an eventual 
segfault.

Interestingly, the empty unicode string does not cause a segfault, since it 
causes seq_to_R to return before calling to_Robj.

I suppose the solution is to use the Python API's PyUnicode_Check function 
before PySequenceCheck (http://docs.python.org/api/unicodeObjects.html) and 
treat conversion of this type of data especially. As I see it, there are 2 
options:

1. Convert the unicode string to normal string, and then pass it to R (lose 
unicode functionality).
2. Pass to R as Unicode -- I believe Python and R both support UCS2 -- is the 
translation straightforward?

Case 2 is preferable, case 1 is more of a hack. I presume we will have to do 
something similar to what RPy does when PyString_Check works:

PROTECT(robj=NEW_STRING(1));
SET_STRING_ELT(robj,0,COPY_TO_USER_STRING(PyString_AsString(obj)));

But what are NEW_STRING, SET_STRING_ELT, and COPY_TO_USER_STRING defined as? I 
can't seem to find definitions of any of these. There is a PyUnicode_AsUnicode 
function in Python's C API, so we should be able to use that.

I'm going to take a short break from this for a bit, but please email me any 
suggestions/ideas and what to do next.

Toby Dylan Hocking

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Gregory
Warnes
Sent: Tuesday, October 16, 2007 6:20 PM
To: RPy help, support and design discussion list
Subject: Re: [Rpy] segfault on unicode string conversion


I've been trying to make time to work on fixing all of the  
outstanding bugs.   Other duties keep pulling me away.

This should be a simple fix...


On Oct 16, 2007, at 7:56PM , Toby Dylan Hocking wrote:

> Hi all,
>
> I really need RPy to resolve this issue:
> http://sourceforge.net/tracker/index.php? 
> func=detail&aid=1592811&group_id=48422&atid=453021
>
> Basically, I have a python app that is using RPy to make some neat
> graphics for a website, and some parameters are passed from Python  
> to R in
> function arguments as unicode strings. This causes the python  
> interpreter
> to segfault, presumably in seq_to_R in rpymodule.c (confirm or deny?)
>
> Is there any chance the dev team can fix this bug -- unicode  
> support for
> rpy -- anytime soon?
>
> Sincerely,
> Toby Dylan Hocking
> http://www.ocf.berkeley.edu/~tdhock
>
> ---------------------------------------------------------------------- 
> ---
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a  
> browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> rpy-list mailing list
> rpy-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/rpy-list


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to