Date
1 - 2 of 2
Review: fix bug where optimize and closure assign collide (issue737041)
larry...@...
Reviewers: ,
Description: OK, trying to explain this. Ci *= color_C is legal Ci = 0 is legal as a special case (clear the closure) but X *= (zero valued thing) gets optimized to X = (zero valued thing) So, we were turning color_C = ...; Ci *= color_C; into color_const = 0; Ci = color_const; and were hitting a runtime assertion. Oops. No worries, just fix the runtime. Please review this at http://codereview.appspot.com/737041/show Affected files: src/liboslexec/opassign.cpp Index: src/liboslexec/opassign.cpp =================================================================== --- src/liboslexec/opassign.cpp (revision 606) +++ src/liboslexec/opassign.cpp (working copy) @@ -191,7 +191,8 @@ if (Result.typespec().is_closure() && Src.typespec().is_closure()) impl = assign_closure; else if (Result.typespec().is_closure() && - (Src.typespec().is_int() || Src.typespec().is_float())) { + (Src.typespec().is_int() || Src.typespec().is_float() || + Src.typespec().is_color())) { // Special case: closure = 0 -> clear it impl = clear_closure; } |
|
cku...@...
|
|