[Sc-devel] [] can cause instability: tests in primitives?

Dan Stowell danstowell at gmail.com
Wed Nov 21 15:51:12 PST 2007


Dear all,

As discussed on sc-users today, there are at least two examples of
empty arrays being able to cause instability in the language:

 [].plot(minval: -1, maxval: 1)

 100.do{|i| [].wrapAt(i).postln }

(Run them many times if you want to cause the instabilities.)

wrapAt's primitive uses basicWrapAt(), and plot uses unlace which uses
prArrayUnlace(), both in PyrArrayPrimitives.cpp. Looks like they both
fail to account for an empty array.

Could there be some generic way to catch these problems? e.g. this
line could (I guess) return nil if empty:

 if(obj->size==0) {SetNil(a); return errNone; }

but would need slightly different versions adding to each primitive.
Any better way?

Dan


More information about the Sc-devel mailing list