Difference between revisions of "ChucK/Bugs/Known"

From CSWiki
Jump to: navigation, search
Line 1: Line 1:
==Known Bugs in ChucK==
 
 
 
These following have been verified and will be fixed in an upcoming release.
 
These following have been verified and will be fixed in an upcoming release.
 
----
 
----
 +
 +
== Multiple Declarations ==
 
* multiple declarations in single statement causes crashes/undefined behavior.  Example:
 
* multiple declarations in single statement causes crashes/undefined behavior.  Example:
  
Line 13: Line 13:
 
     int a; int b;
 
     int a; int b;
  
 +
== Sporking Non-static Member Functions ==
 
* spork a non-static member function causes crashes/undefined behavior.  Example:
 
* spork a non-static member function causes crashes/undefined behavior.  Example:
  
Line 25: Line 26:
 
     spork ~ x.foo();
 
     spork ~ x.foo();
  
 +
== ++/-- inline bugs ==
 
* ++/-- causes incorrect behavior when used inline.  Example:
 
* ++/-- causes incorrect behavior when used inline.  Example:
  
Line 32: Line 34:
 
Workaround:  split into multiple statements
 
Workaround:  split into multiple statements
  
 +
== Static class variable initialization ==
 
* static class variables are initialized incorrectly.  Example:
 
* static class variables are initialized incorrectly.  Example:
  

Revision as of 21:30, 15 July 2006

These following have been verified and will be fixed in an upcoming release.


Multiple Declarations

  • multiple declarations in single statement causes crashes/undefined behavior. Example:
   // bug: this causes bad things to happen
   int a, b;

Here is a workaround until the bug is fixed:

   // workaround
   int a; int b;

Sporking Non-static Member Functions

  • spork a non-static member function causes crashes/undefined behavior. Example:
   class X
   {
       void fun foo() { <<< "hi" >>>; }
   }
   
   X x;
   
   // bug: causes crash and undefined behavior
   spork ~ x.foo();

++/-- inline bugs

  • ++/-- causes incorrect behavior when used inline. Example:
   // bug
   i++ * y++ => z;

Workaround: split into multiple statements

Static class variable initialization

  • static class variables are initialized incorrectly. Example:
   class X
   {
       // bug - this is not initialized
       static Object our_object;
   }

Here is a workaround:

   class X
   {
       // declare as reference
       static Object @ our_object;
   }
   
   // initialize outside class
   new Object @=> X.our_object;