[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider: [6887] trunk/Source/lang/LangPrimSource/ PyrArrayPrimitives.cpp
Revision: 6887
http://svn.sourceforge.net/supercollider/?rev=6887&view=rev
Author: joshpar
Date: 2008-01-07 10:22:41 -0800 (Mon, 07 Jan 2008)
Log Message:
-----------
fix .lace crash
Modified Paths:
--------------
trunk/Source/lang/LangPrimSource/PyrArrayPrimitives.cpp
Modified: trunk/Source/lang/LangPrimSource/PyrArrayPrimitives.cpp
===================================================================
--- trunk/Source/lang/LangPrimSource/PyrArrayPrimitives.cpp 2008-01-07 16:55:50 UTC (rev 6886)
+++ trunk/Source/lang/LangPrimSource/PyrArrayPrimitives.cpp 2008-01-07 18:22:41 UTC (rev 6887)
@@ -2024,25 +2024,29 @@
n = sc_max(1, n);
- obj2 = (PyrObject*)instantiateObject(g->gc, obj1->classptr, n, false, true);
- for (i=j=k=0; i<n; ++i) {
- if (slots[k].utag == tagObj) {
- obj3 = slots[k].uo;
- if (isKindOf((PyrObject*)obj3, class_list)) {
- obj3 = obj3->slots[0].uo; // get the list's array
- }
- if (obj3 && isKindOf((PyrObject*)obj3, class_array)) {
- m = j % obj3->size;
- obj2->slots[i].ucopy = obj3->slots[m].ucopy;
- } else {
- obj2->slots[i].ucopy = slots[k].ucopy;
- }
- } else {
- obj2->slots[i].ucopy = slots[k].ucopy;
- }
- k = (k+1) % obj1->size;
- if (k == 0) j++;
- }
+ if(obj1->size > 0) {
+ obj2 = (PyrObject*)instantiateObject(g->gc, obj1->classptr, n, false, true);
+ for (i=j=k=0; i<n; ++i) {
+ if (slots[k].utag == tagObj) {
+ obj3 = slots[k].uo;
+ if (isKindOf((PyrObject*)obj3, class_list)) {
+ obj3 = obj3->slots[0].uo; // get the list's array
+ }
+ if (obj3 && isKindOf((PyrObject*)obj3, class_array)) {
+ m = j % obj3->size;
+ obj2->slots[i].ucopy = obj3->slots[m].ucopy;
+ } else {
+ obj2->slots[i].ucopy = slots[k].ucopy;
+ }
+ } else {
+ obj2->slots[i].ucopy = slots[k].ucopy;
+ }
+ k = (k+1) % obj1->size;
+ if (k == 0) j++;
+ }
+ } else {
+ obj2 = (PyrObject*)instantiateObject(g->gc, obj1->classptr, n, true, true);
+ }
obj2->size = n;
a->uo = obj2;
return errNone;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.