diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index cedcfac..437893a 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -1009,8 +1009,10 @@ Context2d::SetShadowColor(Local prop, Local val, const AccessorIn Handle Context2d::GetShadowColor(Local prop, const AccessorInfo &info) { + char buf[64]; Context2d *context = ObjectWrap::Unwrap(info.This()); - return String::New(rgba_to_string(context->state->shadow)); + rgba_to_string(context->state->shadow, buf); + return String::New(buf); } /* diff --git a/src/color.cc b/src/color.cc index 4341d78..ab4a8f1 100644 --- a/src/color.cc +++ b/src/color.cc @@ -239,9 +239,8 @@ rgba_create(uint32_t rgba) { * Return a string representation of the color. */ -char * -rgba_to_string(rgba_t rgba) { - char *buf = (char *) malloc(64); +void +rgba_to_string(rgba_t rgba, char *buf) { if (1 == rgba.a) { sprintf(buf, "#%.2X%.2X%.2X" , (int) (rgba.r * 255) @@ -254,7 +253,6 @@ rgba_to_string(rgba_t rgba) { , (int) (rgba.b * 255) , rgba.a); } - return buf; } /* diff --git a/src/color.h b/src/color.h index 4119316..10de606 100644 --- a/src/color.h +++ b/src/color.h @@ -30,8 +30,8 @@ rgba_create(uint32_t rgba); int32_t rgba_from_string(const char *str, short *ok); -char * -rgba_to_string(rgba_t rgba); +void +rgba_to_string(rgba_t rgba, char *buf); void rgba_inspect(int32_t rgba);