Skip to content

Commit c4e8431

Browse files
committed
fixes to the Windows build
1 parent 684731d commit c4e8431

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

src/Canvas.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
// Copyright (c) 2010 LearnBoost <[email protected]>
55
//
66

7-
#include "Canvas.h"
8-
#include "PNG.h"
9-
#include "CanvasRenderingContext2d.h"
107
#include <assert.h>
118
#include <stdlib.h>
129
#include <string.h>
1310
#include <node_buffer.h>
1411
#include <node_version.h>
1512
#include <cairo-pdf.h>
1613
#include <cairo-svg.h>
14+
15+
#include "Canvas.h"
16+
#include "PNG.h"
17+
#include "CanvasRenderingContext2d.h"
1718
#include "closure.h"
1819

1920
#ifdef HAVE_JPEG

src/Canvas.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@
88
#ifndef __NODE_CANVAS_H__
99
#define __NODE_CANVAS_H__
1010

11-
#include <v8.h>
1211
#include <node.h>
12+
#include <v8.h>
1313
#include <node_object_wrap.h>
1414
#include <node_version.h>
1515
#include <pango/pangocairo.h>
1616
#include <cairo.h>
1717
#include <nan.h>
1818

19-
using namespace v8;
2019
using namespace node;
20+
using namespace v8;
2121

2222
/*
2323
* Maxmimum states per context.

src/CanvasRenderingContext2d.cc

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
//
77

88
#include <math.h>
9-
#include <string.h>
109
#include <stdlib.h>
1110
#include <limits>
1211
#include <vector>
1312
#include <algorithm>
13+
1414
#include "Canvas.h"
1515
#include "Point.h"
1616
#include "Image.h"
@@ -32,6 +32,28 @@
3232

3333
Nan::Persistent<FunctionTemplate> Context2d::constructor;
3434

35+
/*
36+
* Custom strndup since Windows doesn't have it
37+
*/
38+
static char*
39+
_strndup(const char *s, size_t n) {
40+
size_t i;
41+
const char *p = s;
42+
char *ret = NULL;
43+
44+
for (i = 0; i < n && *p; i++, p++)
45+
;
46+
47+
ret = (char*)malloc(i + 1);
48+
49+
if (ret) {
50+
memcpy(ret, s, i);
51+
ret[i] = '\0';
52+
}
53+
54+
return ret;
55+
}
56+
3557
/*
3658
* Rectangle arg assertions.
3759
*/
@@ -65,7 +87,7 @@ enum {
6587

6688
void state_assign_fontFamily(canvas_state_t *state, const char *str) {
6789
free(state->fontFamily);
68-
state->fontFamily = strndup(str, 100);
90+
state->fontFamily = _strndup(str, 100);
6991
}
7092

7193

0 commit comments

Comments
 (0)