Skip to content

Commit ba7ace8

Browse files
authored
Merge pull request #4 from powersync-ja/windows-builds
Fix builds with MSVSC
2 parents 4fca8c3 + b064459 commit ba7ace8

File tree

6 files changed

+139
-148
lines changed

6 files changed

+139
-148
lines changed

.changeset/lucky-glasses-wear.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@powersync/better-sqlite3": patch
3+
---
4+
5+
Fix build on Windows.

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ jobs:
2828
matrix:
2929
os:
3030
- ubuntu-20.04
31-
# - macos-13
32-
# - macos-14
33-
# - windows-2019
31+
- macos-13
32+
- macos-latest
33+
- windows-2019
3434
node:
3535
# - 18
3636
# - 20

src/better_sqlite3.cpp

Lines changed: 62 additions & 68 deletions
Large diffs are not rendered by default.

src/better_sqlite3.hpp

Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <node.h>
1717
#include <node_object_wrap.h>
1818
#include <node_buffer.h>
19-
#line 158 "./src/util/macros.lzz"
19+
#line 156 "./src/util/macros.lzz"
2020
void SetPrototypeGetter(
2121
v8::Isolate* isolate,
2222
v8::Local<v8::External> data,
@@ -43,21 +43,21 @@ void ThrowError (char const * message);
4343
void ThrowTypeError (char const * message);
4444
#line 40 "./src/util/macros.lzz"
4545
void ThrowRangeError (char const * message);
46-
#line 105 "./src/util/macros.lzz"
46+
#line 103 "./src/util/macros.lzz"
4747
bool IS_SKIPPED (char c);
48-
#line 110 "./src/util/macros.lzz"
48+
#line 108 "./src/util/macros.lzz"
4949
template <typename T>
50-
#line 110 "./src/util/macros.lzz"
50+
#line 108 "./src/util/macros.lzz"
5151
T * ALLOC_ARRAY (size_t count);
52-
#line 115 "./src/util/macros.lzz"
52+
#line 113 "./src/util/macros.lzz"
5353
template <typename T>
54-
#line 115 "./src/util/macros.lzz"
54+
#line 113 "./src/util/macros.lzz"
5555
void FREE_ARRAY (T * array_pointer);
56-
#line 119 "./src/util/macros.lzz"
56+
#line 117 "./src/util/macros.lzz"
5757
v8::Local <v8::FunctionTemplate> NewConstructorTemplate (v8::Isolate * isolate, v8::Local <v8::External> data, v8::FunctionCallback func, char const * name);
58-
#line 130 "./src/util/macros.lzz"
58+
#line 128 "./src/util/macros.lzz"
5959
void SetPrototypeMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, char const * name, v8::FunctionCallback func);
60-
#line 143 "./src/util/macros.lzz"
60+
#line 141 "./src/util/macros.lzz"
6161
void SetPrototypeSymbolMethod (v8::Isolate * isolate, v8::Local <v8::External> data, v8::Local <v8::FunctionTemplate> recv, v8::Local <v8::Symbol> symbol, v8::FunctionCallback func);
6262
#line 1 "./src/util/constants.lzz"
6363
class CS
@@ -281,100 +281,100 @@ class Database : public node::ObjectWrap
281281
explicit CommitHook (v8::Isolate * isolate, Database * db, v8::Local <v8::Function> fn);
282282
#line 199 "./src/objects/database.lzz"
283283
static int invoke (void * data);
284-
#line 221 "./src/objects/database.lzz"
284+
#line 218 "./src/objects/database.lzz"
285285
private:
286-
#line 222 "./src/objects/database.lzz"
286+
#line 219 "./src/objects/database.lzz"
287287
v8::Isolate * const isolate;
288-
#line 223 "./src/objects/database.lzz"
288+
#line 220 "./src/objects/database.lzz"
289289
Database * const db;
290-
#line 224 "./src/objects/database.lzz"
290+
#line 221 "./src/objects/database.lzz"
291291
v8::Global <v8::Function> fn;
292292
};
293-
#line 227 "./src/objects/database.lzz"
293+
#line 224 "./src/objects/database.lzz"
294294
class RollbackHook
295295
{
296-
#line 228 "./src/objects/database.lzz"
296+
#line 225 "./src/objects/database.lzz"
297297
public:
298-
#line 230 "./src/objects/database.lzz"
298+
#line 227 "./src/objects/database.lzz"
299299
explicit RollbackHook (v8::Isolate * isolate, Database * db, v8::Local <v8::Function> fn);
300-
#line 239 "./src/objects/database.lzz"
300+
#line 236 "./src/objects/database.lzz"
301301
static void invoke (void * data);
302-
#line 258 "./src/objects/database.lzz"
302+
#line 252 "./src/objects/database.lzz"
303303
private:
304-
#line 259 "./src/objects/database.lzz"
304+
#line 253 "./src/objects/database.lzz"
305305
v8::Isolate * const isolate;
306-
#line 260 "./src/objects/database.lzz"
306+
#line 254 "./src/objects/database.lzz"
307307
Database * const db;
308-
#line 261 "./src/objects/database.lzz"
308+
#line 255 "./src/objects/database.lzz"
309309
v8::Global <v8::Function> fn;
310310
};
311-
#line 264 "./src/objects/database.lzz"
311+
#line 258 "./src/objects/database.lzz"
312312
explicit Database (v8::Isolate * isolate, Addon * addon, sqlite3 * db_handle, v8::Local <v8::Value> logger);
313-
#line 287 "./src/objects/database.lzz"
313+
#line 281 "./src/objects/database.lzz"
314314
static void JS_new (v8::FunctionCallbackInfo <v8 :: Value> const & info);
315-
#line 339 "./src/objects/database.lzz"
315+
#line 333 "./src/objects/database.lzz"
316316
static void JS_prepare (v8::FunctionCallbackInfo <v8 :: Value> const & info);
317-
#line 355 "./src/objects/database.lzz"
317+
#line 349 "./src/objects/database.lzz"
318318
static void JS_exec (v8::FunctionCallbackInfo <v8 :: Value> const & info);
319-
#line 395 "./src/objects/database.lzz"
319+
#line 389 "./src/objects/database.lzz"
320320
static void JS_backup (v8::FunctionCallbackInfo <v8 :: Value> const & info);
321-
#line 413 "./src/objects/database.lzz"
321+
#line 407 "./src/objects/database.lzz"
322322
static void JS_serialize (v8::FunctionCallbackInfo <v8 :: Value> const & info);
323-
#line 435 "./src/objects/database.lzz"
323+
#line 429 "./src/objects/database.lzz"
324324
static void JS_function (v8::FunctionCallbackInfo <v8 :: Value> const & info);
325-
#line 459 "./src/objects/database.lzz"
325+
#line 453 "./src/objects/database.lzz"
326326
static void JS_aggregate (v8::FunctionCallbackInfo <v8 :: Value> const & info);
327-
#line 488 "./src/objects/database.lzz"
327+
#line 482 "./src/objects/database.lzz"
328328
static void JS_table (v8::FunctionCallbackInfo <v8 :: Value> const & info);
329-
#line 508 "./src/objects/database.lzz"
329+
#line 502 "./src/objects/database.lzz"
330330
static void JS_loadExtension (v8::FunctionCallbackInfo <v8 :: Value> const & info);
331-
#line 529 "./src/objects/database.lzz"
331+
#line 523 "./src/objects/database.lzz"
332332
static void JS_updateHook (v8::FunctionCallbackInfo <v8 :: Value> const & info);
333-
#line 551 "./src/objects/database.lzz"
333+
#line 545 "./src/objects/database.lzz"
334334
static void JS_commitHook (v8::FunctionCallbackInfo <v8 :: Value> const & info);
335-
#line 572 "./src/objects/database.lzz"
335+
#line 566 "./src/objects/database.lzz"
336336
static void JS_rollbackHook (v8::FunctionCallbackInfo <v8 :: Value> const & info);
337-
#line 593 "./src/objects/database.lzz"
337+
#line 587 "./src/objects/database.lzz"
338338
static void JS_close (v8::FunctionCallbackInfo <v8 :: Value> const & info);
339-
#line 603 "./src/objects/database.lzz"
339+
#line 597 "./src/objects/database.lzz"
340340
static void JS_defaultSafeIntegers (v8::FunctionCallbackInfo <v8 :: Value> const & info);
341-
#line 609 "./src/objects/database.lzz"
341+
#line 603 "./src/objects/database.lzz"
342342
static void JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info);
343-
#line 616 "./src/objects/database.lzz"
343+
#line 610 "./src/objects/database.lzz"
344344
static void JS_open (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
345-
#line 620 "./src/objects/database.lzz"
345+
#line 614 "./src/objects/database.lzz"
346346
static void JS_inTransaction (v8::Local <v8 :: Name> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
347-
#line 625 "./src/objects/database.lzz"
347+
#line 619 "./src/objects/database.lzz"
348348
static bool Deserialize (v8::Local <v8::Object> buffer, Addon * addon, sqlite3 * db_handle, bool readonly);
349-
#line 650 "./src/objects/database.lzz"
349+
#line 644 "./src/objects/database.lzz"
350350
static void FreeSerialization (char * data, void * _);
351-
#line 654 "./src/objects/database.lzz"
351+
#line 648 "./src/objects/database.lzz"
352352
static int const MAX_BUFFER_SIZE = node::Buffer::kMaxLength > INT_MAX ? INT_MAX : static_cast<int>(node::Buffer::kMaxLength);
353-
#line 655 "./src/objects/database.lzz"
353+
#line 649 "./src/objects/database.lzz"
354354
static int const MAX_STRING_SIZE = v8::String::kMaxLength > INT_MAX ? INT_MAX : static_cast<int>(v8::String::kMaxLength);
355-
#line 657 "./src/objects/database.lzz"
355+
#line 651 "./src/objects/database.lzz"
356356
sqlite3 * const db_handle;
357-
#line 658 "./src/objects/database.lzz"
357+
#line 652 "./src/objects/database.lzz"
358358
bool open;
359-
#line 659 "./src/objects/database.lzz"
359+
#line 653 "./src/objects/database.lzz"
360360
bool busy;
361-
#line 660 "./src/objects/database.lzz"
361+
#line 654 "./src/objects/database.lzz"
362362
bool safe_ints;
363-
#line 661 "./src/objects/database.lzz"
363+
#line 655 "./src/objects/database.lzz"
364364
bool unsafe_mode;
365-
#line 662 "./src/objects/database.lzz"
365+
#line 656 "./src/objects/database.lzz"
366366
bool was_js_error;
367-
#line 663 "./src/objects/database.lzz"
367+
#line 657 "./src/objects/database.lzz"
368368
bool const has_logger;
369-
#line 664 "./src/objects/database.lzz"
369+
#line 658 "./src/objects/database.lzz"
370370
unsigned short int iterators;
371-
#line 665 "./src/objects/database.lzz"
371+
#line 659 "./src/objects/database.lzz"
372372
Addon * const addon;
373-
#line 666 "./src/objects/database.lzz"
373+
#line 660 "./src/objects/database.lzz"
374374
v8::Global <v8::Value> const logger;
375-
#line 667 "./src/objects/database.lzz"
375+
#line 661 "./src/objects/database.lzz"
376376
std::set <Statement*, CompareStatement> stmts;
377-
#line 668 "./src/objects/database.lzz"
377+
#line 662 "./src/objects/database.lzz"
378378
std::set <Backup*, CompareBackup> backups;
379379
};
380380
#line 1 "./src/objects/statement.lzz"
@@ -906,25 +906,25 @@ LZZ_INLINE void SetFrozen (v8::Isolate * isolate, v8::Local <v8::Context> ctx, v
906906
{
907907
obj->DefineOwnProperty(ctx, key.Get(isolate), value, static_cast<v8::PropertyAttribute>(v8::DontDelete | v8::ReadOnly)).FromJust();
908908
}
909-
#line 105 "./src/util/macros.lzz"
909+
#line 103 "./src/util/macros.lzz"
910910
LZZ_INLINE bool IS_SKIPPED (char c)
911-
#line 105 "./src/util/macros.lzz"
911+
#line 103 "./src/util/macros.lzz"
912912
{
913913
return c == ' ' || c == ';' || (c >= '\t' && c <= '\r');
914914
}
915-
#line 110 "./src/util/macros.lzz"
915+
#line 108 "./src/util/macros.lzz"
916916
template <typename T>
917-
#line 110 "./src/util/macros.lzz"
917+
#line 108 "./src/util/macros.lzz"
918918
LZZ_INLINE T * ALLOC_ARRAY (size_t count)
919-
#line 110 "./src/util/macros.lzz"
919+
#line 108 "./src/util/macros.lzz"
920920
{
921921
return static_cast<T*>(::operator new[](count * sizeof(T)));
922922
}
923-
#line 115 "./src/util/macros.lzz"
923+
#line 113 "./src/util/macros.lzz"
924924
template <typename T>
925-
#line 115 "./src/util/macros.lzz"
925+
#line 113 "./src/util/macros.lzz"
926926
LZZ_INLINE void FREE_ARRAY (T * array_pointer)
927-
#line 115 "./src/util/macros.lzz"
927+
#line 113 "./src/util/macros.lzz"
928928
{
929929
::operator delete[](array_pointer);
930930
}

src/objects/database.lzz

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,7 @@ private:
205205

206206
v8::Local<v8::Context> context = isolate->GetCurrentContext();
207207

208-
const int argc = 0;
209-
v8::Local<v8::Value> argv[argc] = {};
210-
211-
v8::MaybeLocal<v8::Value> maybeReturnValue = self->fn.Get(isolate)->Call(context, v8::Undefined(isolate), argc, argv);
208+
v8::MaybeLocal<v8::Value> maybeReturnValue = self->fn.Get(isolate)->Call(context, v8::Undefined(isolate), 0, nullptr);
212209
v8::Local<v8::Value> returnValue;
213210
if (maybeReturnValue.ToLocal(&returnValue)) {
214211
return returnValue->BooleanValue(isolate) ? 0 : 1;
@@ -245,11 +242,8 @@ private:
245242

246243
v8::Local<v8::Context> context = isolate->GetCurrentContext();
247244

248-
const int argc = 0;
249-
v8::Local<v8::Value> argv[argc] = {};
250-
251245
v8::TryCatch try_catch(isolate);
252-
v8::MaybeLocal<v8::Value> maybeReturnValue = self->fn.Get(isolate)->Call(context, v8::Undefined(isolate), argc, argv);
246+
v8::MaybeLocal<v8::Value> maybeReturnValue = self->fn.Get(isolate)->Call(context, v8::Undefined(isolate), 0, nullptr);
253247
if (maybeReturnValue.IsEmpty()) {
254248
self->db->GetState()->was_js_error = true;
255249
}

src/util/macros.lzz

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,10 @@ void ThrowRangeError(const char* message) { EasyIsolate; isolate->ThrowException
5050
var = (info[at()].As<v8::Type>())__VA_ARGS__
5151

5252
#define _REQUIRE_OPTIONAL_ARGUMENT(at, var, Type, message, ...) \
53-
var = ({ \
54-
bool isSupplied = info.Length() > (at()) && !info[at()]->IsUndefined(); \
55-
if (isSupplied && !info[at()]->Is##Type()) \
56-
return ThrowTypeError("Expected "#at" argument to be "#message" or undefined"); \
57-
(isSupplied ? info[at()].As<v8::Type>()__VA_ARGS__ : v8::MaybeLocal<v8::Type>()); \
58-
})
53+
bool isSupplied = info.Length() > (at()) && !info[at()]->IsUndefined(); \
54+
if (isSupplied && !info[at()]->Is##Type()) \
55+
return ThrowTypeError("Expected "#at" argument to be "#message" or undefined"); \
56+
var = (isSupplied ? info[at()].As<v8::Type>()__VA_ARGS__ : v8::MaybeLocal<v8::Type>()); \
5957

6058
#define REQUIRE_ARGUMENT_INT32(at, var) \
6159
_REQUIRE_ARGUMENT(at, var, Int32, a 32-bit signed integer, ->Value())

0 commit comments

Comments
 (0)