On 11-06-09 7:27 AM, oliver wrote:
On Wed, Jun 08, 2011 at 08:35:34PM -0400, Simon Urbanek wrote:

On Jun 8, 2011, at 8:32 PM, oliver wrote:

On Thu, Jun 09, 2011 at 02:17:31AM +0200, oliver wrote:
[...]
OK, I looked at this now.

LENGTH() checks the length of the vector.

Good to know this.

So the problem of a vector of length 0 can be with any arguments of type SEXP,
hence I will need to check ANY arg on it's length.

This is vital to stability under any situation.

Thanks for this valuable hint!

I will add checks for all my SEXP-args.
[...]

Hey, LENGTH() does not work with String-vectors! :(


Of course it does ...



It does not so on my R 2.10.1 installation.


In the R-Shell I get:

   ==============================
   >  length(c())
   [1] 0
   >
   ==============================

So c() is vec of length 0.

When I feed my readjpeg() with c() as filename arg,

testing with:
====================================================
   if( LENGTH( filename_sexp )<  1 )
   {
     error("LENGTH( filename_sexp )<  1");
     //error("filename can't be vector of length 0");
   }
   else
   {
     error("LENGTH( filename_sexp ) is not<  1");
   }
====================================================


I got:
   Error in readjpeg(filename = c()) : LENGTH( filename_sexp ) is not<  1


You can explain why?

c() doesn't create a STRSXP, it is NULL, which is a NILSXP. LENGTH() doesn't work on that object. (I'd recommend using length() rather than LENGTH(); it's a function, not a macro, and it does give the expected answer.)

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to