[GDI+: 1/10] first pen implementation
Detlef Riekenberg
wine.dev at web.de
Tue Jun 12 11:42:03 CDT 2007
On Mo, 2007-06-11 at 11:51 -0700, Evan Stade wrote:
> +GpStatus WINGDIPAPI GdipCreatePen1(ARGB color, FLOAT width, GpUnit
> unit,
> + GpPen **pen)
> +{
> + LOGBRUSH lb;
> + GpPen *gp_pen;
> +
> + gp_pen = (GpPen*) GdipAlloc(sizeof(GpPen));
> + if(!pen) return OutOfMemory;
> +
> + gp_pen->style = GP_DEFAULT_PENSTYLE;
This looks not correct.
You returned "OutOfMemory", but you check "pen".
I think, you really mean "gp_pen" in that "if".
A test with pen==NULL would be nice.
> + if((gp_pen->unit == UnitWorld) || (gp_pen->unit == UnitPixel)) {
> +
> + } else {
> + FIXME("UnitWorld, UnitPixel only supported units");
> + return NotImplemented;
You leak the allocated memory from gp_pen here.
The FIXME does not help very much.
You should dump the value for the unsupported unit.
> + if(!gp_pen)
> + return GenericError;
This is dead code in this location.
When the allocation for gp_pen failed, you will never reach this line,
because gp_pen was accesed before and produced a crash.
--
By by ... Detlef
More information about the wine-devel
mailing list