Eugeniy Meshcheryakov <eu...@debian.org> (25/03/2009):
> Hello,
> 
> With this patch alsa output works for me.

Thanks to all.

Here's the patch for my NMU.

Mraw,
KiBi.
diff -u chuck-1.2.0.8.dfsg/src/rtaudio.cpp chuck-1.2.0.8.dfsg/src/rtaudio.cpp
--- chuck-1.2.0.8.dfsg/src/rtaudio.cpp
+++ chuck-1.2.0.8.dfsg/src/rtaudio.cpp
@@ -4024,7 +4024,7 @@
   snd_pcm_sw_params_alloca( &sw_params );
   snd_pcm_sw_params_current( handle, sw_params );
   snd_pcm_sw_params_set_start_threshold( handle, sw_params, *bufferSize );
-  snd_pcm_sw_params_set_stop_threshold( handle, sw_params, 0x7fffffff );
+  snd_pcm_sw_params_set_stop_threshold( handle, sw_params, LONG_MAX );
   snd_pcm_sw_params_set_silence_threshold( handle, sw_params, 0 );
   snd_pcm_sw_params_set_silence_size( handle, sw_params, INT_MAX );
   err = snd_pcm_sw_params( handle, sw_params );
diff -u chuck-1.2.0.8.dfsg/debian/changelog chuck-1.2.0.8.dfsg/debian/changelog
--- chuck-1.2.0.8.dfsg/debian/changelog
+++ chuck-1.2.0.8.dfsg/debian/changelog
@@ -1,3 +1,16 @@
+chuck (1.2.0.8.dfsg-1.2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix broken runtime on 64-bit architectures, thanks to patches by
+    Samuel Thibault (Closes: #398148).
+  * Set urgency to “medium” as this bug affects testing.
+  * Fix FTBFS with GCC 4.4, thanks to Martin Michlmayr, by adding a
+    <cstdio> include in src/util_string.h (Closes: #504962).
+  * Add jackd to Suggests as suggested (ah!) by James Westby
+    (Closes: #487982).
+
+ -- Cyril Brulebois <k...@debian.org>  Sun, 19 Jul 2009 16:44:04 +0200
+
 chuck (1.2.0.8.dfsg-1.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -u chuck-1.2.0.8.dfsg/debian/rules chuck-1.2.0.8.dfsg/debian/rules
--- chuck-1.2.0.8.dfsg/debian/rules
+++ chuck-1.2.0.8.dfsg/debian/rules
@@ -6,7 +6,7 @@
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
-CFLAGS = -Wall -g
+CFLAGS = -Wall -g -fno-strict-aliasing
 
 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
 	CFLAGS += -O0
diff -u chuck-1.2.0.8.dfsg/debian/control chuck-1.2.0.8.dfsg/debian/control
--- chuck-1.2.0.8.dfsg/debian/control
+++ chuck-1.2.0.8.dfsg/debian/control
@@ -8,6 +8,7 @@
 Package: chuck
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: jackd
 Description: Concurrent, On-the-fly Audio Programming Language
  ChucK is a new audio programming language for real-time synthesis,
  composition, and performance, which runs on commodity operating systems.
only in patch2:
unchanged:
--- chuck-1.2.0.8.dfsg.orig/src/chuck_emit.cpp
+++ chuck-1.2.0.8.dfsg/src/chuck_emit.cpp
@@ -371,9 +371,9 @@
                     // if decl, then expect only one word per var
                     if( exp->s_type == ae_exp_decl )
                         emit->append( new Chuck_Instr_Reg_Pop_Word3( exp->decl.num_var_decls ) );
-                    else if( exp->type->size == 4 ) // ISSUE: 64-bit
+                    else if( exp->type->size == sz_INT ) // ISSUE: 64-bit
                         emit->append( new Chuck_Instr_Reg_Pop_Word );
-                    else if( exp->type->size == 8 ) // ISSUE: 64-bit
+                    else if( exp->type->size == sz_FLOAT ) // ISSUE: 64-bit
                         emit->append( new Chuck_Instr_Reg_Pop_Word2 );
                     else
                     {
@@ -606,9 +606,9 @@
             return FALSE;
 
         // HACK!
-        if( stmt->c3->type->size == 8 ) // ISSUE: 64-bit
+        if( stmt->c3->type->size == sz_FLOAT ) // ISSUE: 64-bit
             emit->append( new Chuck_Instr_Reg_Pop_Word2 );
-        else if( stmt->c3->type->size == 4 ) // ISSUE: 64-bit
+        else if( stmt->c3->type->size == sz_INT ) // ISSUE: 64-bit
             emit->append( new Chuck_Instr_Reg_Pop_Word );
         else if( stmt->c3->type->size != 0 )
         {
@@ -1027,8 +1027,7 @@
     emit->code->stack_break.push_back( NULL );
 
     // push the value of the loop counter
-    // TODO: get rid of hard code 4
-    emit->append( new Chuck_Instr_Reg_Push_Deref( (t_CKUINT)counter, 4 ) ); // ISSUE: 64-bit
+    emit->append( new Chuck_Instr_Reg_Push_Deref( (t_CKUINT)counter, sz_INT ) );
 
     // get the type, taking cast into account
     Chuck_Type * type = stmt->cond->cast_to ? stmt->cond->cast_to : stmt->cond->type;
@@ -2122,9 +2121,9 @@
             else
             {
                 // assign primitive
-                if( right->size == 4 ) // ISSUE: 64-bit
+                if( right->size == sz_INT ) // ISSUE: 64-bit
                     emit->append( new Chuck_Instr_Assign_Primitive );
-                else if( right->size == 8 ) // ISSUE: 64-bit
+                else if( right->size == sz_FLOAT ) // ISSUE: 64-bit
                     emit->append( new Chuck_Instr_Assign_Primitive2 );
                 else
                 {
@@ -2644,7 +2643,7 @@
         is_str = TRUE;
 
     // make sure
-    if( type->size != 4 && type->size != 8 ) // ISSUE: 64-bit
+    if( type->size != sz_INT && type->size != sz_FLOAT )
     {
         EM_error2( array->linepos,
             "(emit): internal error: array with datasize of %i...", type->size );
@@ -2705,7 +2704,7 @@
     t_CKUINT size = type->size;
     if( func->def->s_type == ae_func_builtin )
     {
-        if( size == 0 || size == 4 || size == 8 ) // ISSUE: 64-bit
+        if( size == 0 || size == sz_INT || size == sz_FLOAT )
         {
             // is member
             if( is_member )
@@ -3165,9 +3164,9 @@
         /* if( !is_init && first_exp )
         {
             // push 0
-            if( type->size == 4 ) // ISSUE: 64-bit
+            if( type->size == sz_INT )
                 emit->append( new Chuck_Instr_Reg_Push_Imm( 0 ) );
-            else if( type->size == 8 ) // ISSUE: 64-bit
+            else if( type->size == sz_FLOAT )
                 emit->append( new Chuck_Instr_Reg_Push_Imm2( 0.0 ) );
             else
             {
@@ -3184,9 +3183,9 @@
         if( value->is_member )
         {
             // zero out location in object, and leave addr on operand stack
-            if( type->size == 4 ) // ISSUE: 64-bit
+            if( type->size == sz_INT ) // ISSUE: 64-bit
                 emit->append( new Chuck_Instr_Alloc_Member_Word( value->offset ) );
-            else if( type->size == 8 ) // ISSUE: 64-bit
+            else if( type->size == sz_FLOAT ) // ISSUE: 64-bit
                 emit->append( new Chuck_Instr_Alloc_Member_Word2( value->offset ) );
             else
             {
@@ -3218,9 +3217,9 @@
                 // TODO: this is wrong for static
                 // BAD:
                 // FIX:
-                if( type->size == 4 ) // ISSUE: 64-bit
+                if( type->size == sz_INT ) // ISSUE: 64-bit
                     emit->append( new Chuck_Instr_Alloc_Word( local->offset ) );
-                else if( type->size == 8 ) // ISSUE: 64-bit
+                else if( type->size == sz_FLOAT ) // ISSUE: 64-bit
                     emit->append( new Chuck_Instr_Alloc_Word2( local->offset ) );
                 else
                 {
@@ -3273,11 +3272,11 @@
             // if obj
             if( is_obj )
                 emit->append( new Chuck_Instr_Assign_Object );
-            // size 4 primitive
-            else if( type->size == 4 ) // ISSUE: 64-bit
+            // size int primitive
+            else if( type->size == sz_INT ) // ISSUE: 64-bit
                 emit->append( new Chuck_Instr_Assign_Primitive );
-            // size 8 primitive
-            else if( type->size == 8 ) // ISSUE: 64-bit
+            // size float primitive
+            else if( type->size == sz_FLOAT ) // ISSUE: 64-bit
                 emit->append( new Chuck_Instr_Assign_Primitive2 );
             else
                 assert( FALSE );
@@ -3672,7 +3671,7 @@
     // handle member function
     // TODO: this is a hack - what if exp is not func_call?
     // if( emit->code->need_this )
-    //     size += 4;
+    //     size += sz_UINT;
 
     // emit instruction that will put the code on the stack
     emit->append( new Chuck_Instr_Reg_Push_Imm( (t_CKUINT)code ) );
@@ -3746,9 +3745,9 @@
         if( v->func_ref )
             emit->append( new Chuck_Instr_Reg_Push_Imm( (t_CKUINT)v->func_ref ) );
         // check size
-        else if( v->type->size == 4 ) // ISSUE: 64-bit
+        else if( v->type->size == sz_INT ) // ISSUE: 64-bit
             emit->append( new Chuck_Instr_Reg_Push_Mem( v->offset, v->is_context_global ) );
-        else if( v->type->size == 8 ) // ISSUE: 64-bit
+        else if( v->type->size == sz_FLOAT ) // ISSUE: 64-bit
             emit->append( new Chuck_Instr_Reg_Push_Mem2( v->offset, v->is_context_global  ) );
         else
         {
only in patch2:
unchanged:
--- chuck-1.2.0.8.dfsg.orig/src/ulib_std.cpp
+++ chuck-1.2.0.8.dfsg/src/ulib_std.cpp
@@ -549,8 +549,8 @@
 // randi
 CK_DLL_SFUN( rand2_impl ) // inclusive.
 {
-    int min = *(int *)ARGS, max = *((int *)ARGS + 1);
-    int range = max - min; 
+    t_CKINT min = *(t_CKINT *)ARGS, max = *((t_CKINT *)ARGS + 1);
+    t_CKINT range = max - min; 
     if ( range == 0 )
     {
         RETURN->v_int = min;
@@ -562,11 +562,11 @@
     {
         if( range > 0 )
         { 
-            RETURN->v_int = min + (int) ( (1.0 + range) * ( ::rand()/(RAND_MAX+1.0) ) );
+            RETURN->v_int = min + (t_CKINT) ( (1.0 + range) * ( ::rand()/(RAND_MAX+1.0) ) );
         }
         else
         { 
-            RETURN->v_int = min - (int) ( (-range + 1.0) * ( ::rand()/(RAND_MAX+1.0) ) );
+            RETURN->v_int = min - (t_CKINT) ( (-range + 1.0) * ( ::rand()/(RAND_MAX+1.0) ) );
         }
     }
 }
only in patch2:
unchanged:
--- chuck-1.2.0.8.dfsg.orig/src/util_string.h
+++ chuck-1.2.0.8.dfsg/src/util_string.h
@@ -34,6 +34,7 @@
 #define __UTIL_STRING_H__
 
 #include "chuck_def.h"
+#include <cstdio>
 #include <string>
 #include <vector>
 
only in patch2:
unchanged:
--- chuck-1.2.0.8.dfsg.orig/src/chuck_instr.cpp
+++ chuck-1.2.0.8.dfsg/src/chuck_instr.cpp
@@ -1105,7 +1105,7 @@
 //-----------------------------------------------------------------------------
 void Chuck_Instr_Reg_Push_Deref::execute( Chuck_VM * vm, Chuck_VM_Shred * shred )
 {
-    if( m_size == 4 ) // ISSUE: 64-bit
+    if( m_size == sz_UINT )
     {
         t_CKUINT *& reg_sp = (t_CKUINT *&)shred->reg->sp;
         push_( reg_sp, *((t_CKUINT *)m_val) );
@@ -2526,12 +2526,12 @@
     Chuck_VM_Code * func = (Chuck_VM_Code *)*reg_sp;
     // get the local stack depth - caller local variables
     t_CKUINT local_depth = *(reg_sp+1);
-    // convert to number of 4-byte words, extra partial word counts as additional word
-    local_depth = ( local_depth >> 2 ) + ( local_depth & 0x3 ? 1 : 0 );
+    // convert to number of int words, extra partial word counts as additional word
+    local_depth = ( local_depth / sz_UINT ) + ( local_depth & 0x3 ? 1 : 0 );
     // get the stack depth of the callee function args
-    t_CKUINT stack_depth = ( func->stack_depth >> 2 ) + ( func->stack_depth & 0x3 ? 1 : 0 );
+    t_CKUINT stack_depth = ( func->stack_depth / sz_UINT ) + ( func->stack_depth & 0x3 ? 1 : 0 );
     // get the previous stack depth - caller function args
-    t_CKUINT prev_stack = ( *(mem_sp-1) >> 2 ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );
+    t_CKUINT prev_stack = ( *(mem_sp-1) / sz_UINT ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );
 
     // jump the sp
     mem_sp += prev_stack + local_depth;
@@ -2605,13 +2605,13 @@
     // MOVED TO BELOW: f_mfun f = (f_mfun)func->native_func;
     // get the local stack depth - caller local variables
     t_CKUINT local_depth = *(reg_sp+1);
-    // convert to number of 4-byte words, extra partial word counts as additional word
-    local_depth = ( local_depth >> 2 ) + ( local_depth & 0x3 ? 1 : 0 );
+    // convert to number of int words, extra partial word counts as additional word
+    local_depth = ( local_depth / sz_UINT ) + ( local_depth & 0x3 ? 1 : 0 );
     // get the stack depth of the callee function args
-    t_CKUINT stack_depth = ( func->stack_depth >> 2 ) + ( func->stack_depth & 0x3 ? 1 : 0 );
+    t_CKUINT stack_depth = ( func->stack_depth / sz_UINT ) + ( func->stack_depth & 0x3 ? 1 : 0 );
     // UNUSED: get the previous stack depth - caller function args
-    // UNUSED: t_CKUINT prev_stack = ( *(mem_sp-1) >> 2 ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );
-    // the amount to push in 4-byte words
+    // UNUSED: t_CKUINT prev_stack = ( *(mem_sp-1) / sz_UINT ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );
+    // the amount to push in int words
     t_CKUINT push = local_depth;
     // push the mem stack passed the current function variables and arguments
     mem_sp += push;
@@ -2661,12 +2661,12 @@
     mem_sp -= push;
     
     // push the return
-    if( m_val == 4 ) // ISSUE: 64-bit
+    if( m_val == sz_UINT )
     {
         // push the return args
         push_( reg_sp, retval.v_uint );
     }
-    else if( m_val == 8 ) // ISSUE: 64-bit
+    else if( m_val == sz_FLOAT )
     {
         // push the return args
         t_CKFLOAT *& sp_double = (t_CKFLOAT *&)reg_sp;
@@ -2703,13 +2703,13 @@
     f_sfun f = (f_sfun)func->native_func;
     // get the local stack depth - caller local variables
     t_CKUINT local_depth = *(reg_sp+1);
-    // convert to number of 4-byte words, extra partial word counts as additional word
-    local_depth = ( local_depth >> 2 ) + ( local_depth & 0x3 ? 1 : 0 );
+    // convert to number of int words, extra partial word counts as additional word
+    local_depth = ( local_depth / sz_UINT ) + ( local_depth & 0x3 ? 1 : 0 );
     // get the stack depth of the callee function args
-    t_CKUINT stack_depth = ( func->stack_depth >> 2 ) + ( func->stack_depth & 0x3 ? 1 : 0 );
+    t_CKUINT stack_depth = ( func->stack_depth / sz_UINT ) + ( func->stack_depth & 0x3 ? 1 : 0 );
     // UNUSED: get the previous stack depth - caller function args
-    // UNUSED: t_CKUINT prev_stack = ( *(mem_sp-1) >> 2 ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );    
-    // the amount to push in 4-byte words
+    // UNUSED: t_CKUINT prev_stack = ( *(mem_sp-1) / sz_UINT ) + ( *(mem_sp-1) & 0x3 ? 1 : 0 );    
+    // the amount to push in int words
     t_CKUINT push = local_depth;
     // push the mem stack passed the current function variables and arguments
     mem_sp += push;
@@ -2747,12 +2747,12 @@
     mem_sp -= push;
 
     // push the return
-    if( m_val == 4 ) // ISSUE: 64-bit
+    if( m_val == sz_UINT ) // ISSUE: 64-bit
     {
         // push the return args
         push_( reg_sp, retval.v_uint );
     }
-    else if( m_val == 8 ) // ISSUE: 64-bit
+    else if( m_val == sz_FLOAT ) // ISSUE: 64-bit
     {
         // push the return args
         t_CKFLOAT *& sp_double = (t_CKFLOAT *&)reg_sp;
@@ -2985,7 +2985,7 @@
     t_CKUINT *& reg_sp = (t_CKUINT *&)shred->reg->sp;
 
     // allocate the array
-    if( m_type_ref->size == 4 ) // ISSUE: 64-bit
+    if( m_type_ref->size == sz_INT ) // ISSUE: 64-bit
     {
         // pop the values
         pop_( reg_sp, m_length );
@@ -3003,10 +3003,10 @@
         // push the pointer
         push_( reg_sp, (t_CKUINT)array );
     }
-    else if( m_type_ref->size == 8 ) // ISSUE: 64-bit
+    else if( m_type_ref->size == sz_FLOAT ) // ISSUE: 64-bit
     {
         // pop the values
-        pop_( reg_sp, 2 * m_length );
+        pop_( reg_sp, (sz_FLOAT / sz_INT) * m_length );
         // instantiate array
         Chuck_Array8 * array = new Chuck_Array8( m_length );
         // problem
@@ -3114,7 +3114,7 @@
     if( capacity >= top )
     {
         // check size
-        if( size == 4 ) // ISSUE: 64-bit
+        if( size == sz_INT ) // ISSUE: 64-bit
         {
             Chuck_Array4 * base = new Chuck_Array4( is_obj, *capacity );
             if( !base ) goto out_of_memory;
@@ -3312,8 +3312,7 @@
     // check pointer
     if( !(*sp) ) goto null_pointer;
 
-    // 4 or 8
-    if( m_size == 4 ) // ISSUE: 64-bit
+    if( m_size == sz_INT ) // ISSUE: 64-bit
     {
         // get array
         Chuck_Array4 * arr = (Chuck_Array4 *)(*sp);
@@ -3335,7 +3334,7 @@
             push_( sp, val );
         }
     }
-    else if( m_size == 8 ) // ISSUE: 64-bit
+    else if( m_size == sz_FLOAT ) // ISSUE: 64-bit
     {
         // get array
         Chuck_Array8 * arr = (Chuck_Array8 *)(*sp);
@@ -3404,8 +3403,7 @@
     // check pointer
     if( !(*sp) ) goto null_pointer;
 
-    // 4 or 8
-    if( m_size == 4 ) // ISSUE: 64-bit
+    if( m_size == sz_INT ) // ISSUE: 64-bit
     {
         // get array
         Chuck_Array4 * arr = (Chuck_Array4 *)(*sp);
@@ -3427,7 +3425,7 @@
             push_( sp, val );
         }
     }
-    else if( m_size == 8 ) // ISSUE: 64-bit
+    else if( m_size == sz_FLOAT ) // ISSUE: 64-bit
     {
         // get array
         Chuck_Array8 * arr = (Chuck_Array8 *)(*sp);
@@ -3522,8 +3520,7 @@
         }
     }
 
-    // 4 or 8
-    if( m_size == 4 ) // ISSUE: 64-bit
+    if( m_size == sz_INT ) // ISSUE: 64-bit
     {
         // get arry
         Chuck_Array4 * arr = base;
@@ -3545,7 +3542,7 @@
             push_( sp, val );
         }
     }
-    else if( m_size == 8 ) // ISSUE: 64-bit
+    else if( m_size == sz_FLOAT ) // ISSUE: 64-bit
     {
         // get array
         Chuck_Array8 * arr = (Chuck_Array8 *)(base);
@@ -3626,9 +3623,8 @@
     }
     else
     {
-        // 4 or 8
-        if( m_size == 4 ) { push_( sp, *((t_CKUINT *)data) ); } // ISSUE: 64-bit
-        else if( m_size == 8 ) { push_float( sp, *((t_CKFLOAT *)data) ); } // ISSUE: 64-bit
+        if( m_size == sz_UINT ) { push_( sp, *((t_CKUINT *)data) ); } // ISSUE: 64-bit
+        else if( m_size == sz_FLOAT ) { push_float( sp, *((t_CKFLOAT *)data) ); } // ISSUE: 64-bit
         else assert( FALSE );
     }
 
@@ -3717,9 +3713,8 @@
     }
     else
     {
-        // 4 or 8
-        if( m_size == 4 ) { push_( sp, *((t_CKUINT *)data) ); } // ISSUE: 64-bit
-        else if( m_size == 8 ) { push_float( sp, *((t_CKFLOAT *)data) ); } // ISSUE: 64-bit
+        if( m_size == sz_UINT ) { push_( sp, *((t_CKUINT *)data) ); } // ISSUE: 64-bit
+        else if( m_size == sz_FLOAT ) { push_float( sp, *((t_CKFLOAT *)data) ); } // ISSUE: 64-bit
         else assert( FALSE );
     }
 }
@@ -3744,9 +3739,8 @@
     }
     else
     {
-        // 4 or 8
-        if( m_size == 4 ) { push_( sp, *((t_CKUINT *)m_addr) ); } // ISSUE: 64-bit
-        else if( m_size == 8 ) { push_float( sp, *((t_CKFLOAT *)m_addr) ); } // ISSUE: 64-bit
+        if( m_size == sz_UINT ) { push_( sp, *((t_CKUINT *)m_addr) ); } // ISSUE: 64-bit
+        else if( m_size == sz_FLOAT ) { push_float( sp, *((t_CKFLOAT *)m_addr) ); } // ISSUE: 64-bit
         else assert( FALSE );
     }
 }
@@ -4110,27 +4104,37 @@
 void Chuck_Instr_Hack::execute( Chuck_VM * vm, Chuck_VM_Shred * shred )
 {
     // look at the type
-    if( m_type_ref->size == 4 ) // ISSUE: 64-bit
+    switch (m_type_ref->xid) {
+    case te_int:
+    case te_uint:
     {
         t_CKINT * sp = (t_CKINT *)shred->reg->sp;
-        if( !isa( m_type_ref, &t_string ) )
-            // print it
-            fprintf( stderr, "%d :(%s)\n", *(sp-1), m_type_ref->c_name() );
-        else
-            fprintf( stderr, "\"%s\" : (%s)\n", ((Chuck_String *)*(sp-1))->str.c_str(), m_type_ref->c_name() );
+	// print it
+	fprintf( stderr, "%d :(%s)\n", *(sp-1), m_type_ref->c_name() );
+	break;
     }
-    else if( m_type_ref->size == 8 ) // ISSUE: 64-bit
+    case te_string:
+    {
+        t_CKINT * sp = (t_CKINT *)shred->reg->sp;
+	// print it
+        fprintf( stderr, "\"%s\" : (%s)\n", ((Chuck_String *)*(sp-1))->str.c_str(), m_type_ref->c_name() );
+	break;
+    }
+    case te_single:
+    case te_float:
+    case te_double:
+    case te_time:
+    case te_dur:
     {
         t_CKFLOAT * sp = (t_CKFLOAT *)shred->reg->sp;
         // print it
         fprintf( stderr, "%f :(%s)\n", *(sp-1), m_type_ref->c_name() );
+	break;
     }
-    else if( m_type_ref->size == 0 )
-    {
+    default:
         fprintf( stderr, "... :(%s)\n", m_type_ref->c_name() );
+	break;
     }
-    else
-        assert( FALSE );
 
     // flush
     fflush( stderr );
@@ -4186,37 +4190,48 @@
         Chuck_Type * type = m_type_refs[i];
 
         // look at the type
-        if( type->size == 4 ) // ISSUE: 64-bit
-        {
+	switch (type->xid) {
+	case te_int:
+	case te_uint:
+	{
             t_CKINT * sp = (t_CKINT *)the_sp;
-            if( !isa( type, &t_string ) )
-            {
-                if( isa( type, &t_object ) )
-                    // print it
-                    fprintf( stderr, "0x%x ", *(sp) );
-                else
-                    // print it
-                    fprintf( stderr, "%d ", *(sp) );
-            }
-            else
-                fprintf( stderr, "%s ", ((Chuck_String *)*(sp))->str.c_str() );
-
-            the_sp += 4;
-        }
-        else if( type->size == 8 ) // ISSUE: 64-bit
-        {
+	    // print it
+	    fprintf( stderr, "%d ", *(sp) );
+            the_sp += sz_INT;
+	    break;
+	}
+	case te_object:
+	{
+            t_CKINT * sp = (t_CKINT *)the_sp;
+	    // print it
+	    fprintf( stderr, "0x%x ", *(sp) );
+            the_sp += sz_INT;
+	    break;
+	}
+	case te_string:
+	{
+            t_CKINT * sp = (t_CKINT *)the_sp;
+	    // print it
+	    fprintf( stderr, "%s ", ((Chuck_String *)*(sp))->str.c_str() );
+            the_sp += sz_INT;
+	    break;
+	}
+	case te_single:
+	case te_float:
+	case te_double:
+	case te_time:
+	case te_dur:
+	{
             t_CKFLOAT * sp = (t_CKFLOAT *)the_sp;
             // print it
             fprintf( stderr, "%f ", *(sp) );
-
-            the_sp += 8;
-        }
-        else if( type->size == 0 )
-        {
+            the_sp += sz_FLOAT;
+            break;
+	}
+	default:
             fprintf( stderr, "... " );
-        }
-        else
-            assert( FALSE );
+	    break;
+	}
     }
 
     fprintf( stderr, "\n" );
only in patch2:
unchanged:
--- chuck-1.2.0.8.dfsg.orig/src/chuck_oo.h
+++ chuck-1.2.0.8.dfsg/src/chuck_oo.h
@@ -152,8 +152,8 @@
 
 
 
-#define CHUCK_ARRAY4_DATASIZE 4
-#define CHUCK_ARRAY8_DATASIZE 8
+#define CHUCK_ARRAY4_DATASIZE sz_INT
+#define CHUCK_ARRAY8_DATASIZE sz_FLOAT
 //-----------------------------------------------------------------------------
 // name: struct Chuck_Array
 // desc: native ChucK arrays ( virtual base class )

Attachment: signature.asc
Description: Digital signature

Reply via email to