Skip to content

Commit 3d06a71

Browse files
committed
Be more careful about calling conventions and struct layouts
1 parent 5286abd commit 3d06a71

17 files changed

+412
-240
lines changed

src/SqlNotebook.sln

Lines changed: 35 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -24,150 +24,108 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "..\ext\Windows-API-
2424
EndProject
2525
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SqlNotebookDb", "SqlNotebookDb\SqlNotebookDb.vcxproj", "{34743FAD-099D-4DB8-B8A6-C863FEC91C77}"
2626
EndProject
27-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "crypto", "crypto\crypto.vcxproj", "{BD15F169-473B-4178-8E8C-0E7F1F1313A5}"
27+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "crypto", "crypto\crypto.vcxproj", "{3450C322-3527-4A61-81A2-8D7552C3DE3E}"
2828
EndProject
29-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fuzzy", "fuzzy\fuzzy.vcxproj", "{FFBF7A77-5836-478A-AB16-F3857F5D65A1}"
29+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fuzzy", "fuzzy\fuzzy.vcxproj", "{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}"
3030
EndProject
31-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stats", "stats\stats.vcxproj", "{1A08E209-1D92-4F52-9D3A-C5889D96C009}"
31+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stats", "stats\stats.vcxproj", "{2464AE91-59E7-404B-98D2-26F27AFA0496}"
3232
EndProject
3333
Global
3434
GlobalSection(SolutionConfigurationPlatforms) = preSolution
35-
Debug|Any CPU = Debug|Any CPU
3635
Debug|x64 = Debug|x64
3736
Debug|x86 = Debug|x86
38-
Release|Any CPU = Release|Any CPU
3937
Release|x64 = Release|x64
4038
Release|x86 = Release|x86
4139
EndGlobalSection
4240
GlobalSection(ProjectConfigurationPlatforms) = postSolution
43-
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Debug|Any CPU.ActiveCfg = Debug|x64
4441
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Debug|x64.ActiveCfg = Debug|x64
4542
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Debug|x64.Build.0 = Debug|x64
4643
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Debug|x86.ActiveCfg = Debug|x86
4744
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Debug|x86.Build.0 = Debug|x86
48-
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Release|Any CPU.ActiveCfg = Release|x64
4945
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Release|x64.ActiveCfg = Release|x64
5046
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Release|x64.Build.0 = Release|x64
5147
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Release|x86.ActiveCfg = Release|x86
5248
{4766090D-0E56-4A24-BDE7-3F9FB8D37C80}.Release|x86.Build.0 = Release|x86
53-
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
54-
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
5549
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|x64.ActiveCfg = Debug|Any CPU
5650
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|x64.Build.0 = Debug|Any CPU
5751
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|x86.ActiveCfg = Debug|Any CPU
5852
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|x86.Build.0 = Debug|Any CPU
59-
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
60-
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|Any CPU.Build.0 = Release|Any CPU
6153
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|x64.ActiveCfg = Release|Any CPU
6254
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|x64.Build.0 = Release|Any CPU
6355
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|x86.ActiveCfg = Release|Any CPU
6456
{C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|x86.Build.0 = Release|Any CPU
65-
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
66-
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|Any CPU.Build.0 = Debug|Any CPU
6757
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|x64.ActiveCfg = Debug|Any CPU
6858
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|x64.Build.0 = Debug|Any CPU
6959
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|x86.ActiveCfg = Debug|Any CPU
7060
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Debug|x86.Build.0 = Debug|Any CPU
71-
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|Any CPU.ActiveCfg = Release|Any CPU
72-
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|Any CPU.Build.0 = Release|Any CPU
7361
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|x64.ActiveCfg = Release|Any CPU
7462
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|x64.Build.0 = Release|Any CPU
7563
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|x86.ActiveCfg = Release|Any CPU
7664
{4ED4FDB5-9FD0-49E6-876D-1635F727C755}.Release|x86.Build.0 = Release|Any CPU
77-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
78-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|Any CPU.Build.0 = Debug|Any CPU
79-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x64.ActiveCfg = Debug|Any CPU
80-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x64.Build.0 = Debug|Any CPU
81-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x86.ActiveCfg = Debug|Any CPU
82-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x86.Build.0 = Debug|Any CPU
83-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|Any CPU.ActiveCfg = Release|Any CPU
84-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|Any CPU.Build.0 = Release|Any CPU
85-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x64.ActiveCfg = Release|Any CPU
86-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x64.Build.0 = Release|Any CPU
87-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x86.ActiveCfg = Release|Any CPU
88-
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x86.Build.0 = Release|Any CPU
89-
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Debug|Any CPU.ActiveCfg = Debug|x64
65+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x64.ActiveCfg = Debug|x64
66+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x64.Build.0 = Debug|x64
67+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x86.ActiveCfg = Debug|x86
68+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Debug|x86.Build.0 = Debug|x86
69+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x64.ActiveCfg = Release|x64
70+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x64.Build.0 = Release|x64
71+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x86.ActiveCfg = Release|x86
72+
{2255C461-80D4-419C-AA57-60AF7D2C6305}.Release|x86.Build.0 = Release|x86
9073
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Debug|x64.ActiveCfg = Debug|x64
9174
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Debug|x64.Build.0 = Debug|x64
9275
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Debug|x86.ActiveCfg = Debug|x86
9376
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Debug|x86.Build.0 = Debug|x86
94-
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Release|Any CPU.ActiveCfg = Release|x64
9577
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Release|x64.ActiveCfg = Release|x64
9678
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Release|x64.Build.0 = Release|x64
9779
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Release|x86.ActiveCfg = Release|x86
9880
{071687A4-D100-4FC4-8B42-CEE211CE9F05}.Release|x86.Build.0 = Release|x86
99-
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
100-
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
10181
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|x64.ActiveCfg = Debug|Any CPU
10282
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|x64.Build.0 = Debug|Any CPU
10383
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|x86.ActiveCfg = Debug|Any CPU
10484
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Debug|x86.Build.0 = Debug|Any CPU
105-
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
106-
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|Any CPU.Build.0 = Release|Any CPU
10785
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|x64.ActiveCfg = Release|Any CPU
10886
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|x64.Build.0 = Release|Any CPU
10987
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|x86.ActiveCfg = Release|Any CPU
11088
{6600E45B-E354-48A9-AA23-CA276102E7BE}.Release|x86.Build.0 = Release|Any CPU
111-
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
112-
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|Any CPU.Build.0 = Debug|Any CPU
11389
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|x64.ActiveCfg = Debug|Any CPU
11490
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|x64.Build.0 = Debug|Any CPU
11591
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|x86.ActiveCfg = Debug|Any CPU
11692
{8B591728-BA7E-4E84-B103-E4971A984A68}.Debug|x86.Build.0 = Debug|Any CPU
117-
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|Any CPU.ActiveCfg = Release|Any CPU
118-
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|Any CPU.Build.0 = Release|Any CPU
11993
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|x64.ActiveCfg = Release|Any CPU
12094
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|x64.Build.0 = Release|Any CPU
12195
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|x86.ActiveCfg = Release|Any CPU
12296
{8B591728-BA7E-4E84-B103-E4971A984A68}.Release|x86.Build.0 = Release|Any CPU
123-
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|Any CPU.ActiveCfg = Debug|x64
124-
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|Any CPU.Build.0 = Debug|x64
12597
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|x64.ActiveCfg = Debug|x64
12698
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|x64.Build.0 = Debug|x64
12799
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|x86.ActiveCfg = Debug|Win32
128100
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Debug|x86.Build.0 = Debug|Win32
129-
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|Any CPU.ActiveCfg = Release|x64
130-
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|Any CPU.Build.0 = Release|x64
131101
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|x64.ActiveCfg = Release|x64
132102
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|x64.Build.0 = Release|x64
133103
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|x86.ActiveCfg = Release|Win32
134104
{34743FAD-099D-4DB8-B8A6-C863FEC91C77}.Release|x86.Build.0 = Release|Win32
135-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|Any CPU.ActiveCfg = Debug|x64
136-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|Any CPU.Build.0 = Debug|x64
137-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|x64.ActiveCfg = Debug|x64
138-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|x64.Build.0 = Debug|x64
139-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|x86.ActiveCfg = Debug|Win32
140-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Debug|x86.Build.0 = Debug|Win32
141-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|Any CPU.ActiveCfg = Release|x64
142-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|Any CPU.Build.0 = Release|x64
143-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|x64.ActiveCfg = Release|x64
144-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|x64.Build.0 = Release|x64
145-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|x86.ActiveCfg = Release|Win32
146-
{BD15F169-473B-4178-8E8C-0E7F1F1313A5}.Release|x86.Build.0 = Release|Win32
147-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|Any CPU.ActiveCfg = Debug|x64
148-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|Any CPU.Build.0 = Debug|x64
149-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|x64.ActiveCfg = Debug|x64
150-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|x64.Build.0 = Debug|x64
151-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|x86.ActiveCfg = Debug|Win32
152-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Debug|x86.Build.0 = Debug|Win32
153-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|Any CPU.ActiveCfg = Release|x64
154-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|Any CPU.Build.0 = Release|x64
155-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|x64.ActiveCfg = Release|x64
156-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|x64.Build.0 = Release|x64
157-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|x86.ActiveCfg = Release|Win32
158-
{FFBF7A77-5836-478A-AB16-F3857F5D65A1}.Release|x86.Build.0 = Release|Win32
159-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|Any CPU.ActiveCfg = Debug|x64
160-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|Any CPU.Build.0 = Debug|x64
161-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|x64.ActiveCfg = Debug|x64
162-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|x64.Build.0 = Debug|x64
163-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|x86.ActiveCfg = Debug|Win32
164-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Debug|x86.Build.0 = Debug|Win32
165-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|Any CPU.ActiveCfg = Release|x64
166-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|Any CPU.Build.0 = Release|x64
167-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|x64.ActiveCfg = Release|x64
168-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|x64.Build.0 = Release|x64
169-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|x86.ActiveCfg = Release|Win32
170-
{1A08E209-1D92-4F52-9D3A-C5889D96C009}.Release|x86.Build.0 = Release|Win32
105+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Debug|x64.ActiveCfg = Debug|x64
106+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Debug|x64.Build.0 = Debug|x64
107+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Debug|x86.ActiveCfg = Debug|Win32
108+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Debug|x86.Build.0 = Debug|Win32
109+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Release|x64.ActiveCfg = Release|x64
110+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Release|x64.Build.0 = Release|x64
111+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Release|x86.ActiveCfg = Release|Win32
112+
{3450C322-3527-4A61-81A2-8D7552C3DE3E}.Release|x86.Build.0 = Release|Win32
113+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Debug|x64.ActiveCfg = Debug|x64
114+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Debug|x64.Build.0 = Debug|x64
115+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Debug|x86.ActiveCfg = Debug|Win32
116+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Debug|x86.Build.0 = Debug|Win32
117+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Release|x64.ActiveCfg = Release|x64
118+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Release|x64.Build.0 = Release|x64
119+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Release|x86.ActiveCfg = Release|Win32
120+
{63CA9325-9A8A-4D54-A9B1-4E0B2B2DBCAA}.Release|x86.Build.0 = Release|Win32
121+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Debug|x64.ActiveCfg = Debug|x64
122+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Debug|x64.Build.0 = Debug|x64
123+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Debug|x86.ActiveCfg = Debug|Win32
124+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Debug|x86.Build.0 = Debug|Win32
125+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Release|x64.ActiveCfg = Release|x64
126+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Release|x64.Build.0 = Release|x64
127+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Release|x86.ActiveCfg = Release|Win32
128+
{2464AE91-59E7-404B-98D2-26F27AFA0496}.Release|x86.Build.0 = Release|Win32
171129
EndGlobalSection
172130
GlobalSection(SolutionProperties) = preSolution
173131
HideSolutionNode = FALSE

src/SqlNotebookDb/db.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050

5151
// Compiler Linkage and Calling Convention Control
5252
#define SQLITE_API __declspec(dllexport)
53+
#define SQLITE_CDECL __cdecl
54+
#define SQLITE_APICALL __cdecl
5355

5456
#include "sqlite3.c"
5557

src/SqlNotebookScript/Core/AdoModules/AdoModuleProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public abstract class AdoModuleProvider : IDisposable
5858

5959
private static readonly UTF8Encoding _utf8 = new(false);
6060

61+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
6162
private delegate void FreeDelegate(IntPtr p);
6263

6364
private static readonly Lazy<(IntPtr Ptr, FreeDelegate Delegate)> _freeFunc =
@@ -84,6 +85,7 @@ public abstract class AdoModuleProvider : IDisposable
8485
/// </summary>
8586
protected static readonly Dictionary<int, AdoCreateInfo> _adoCreateInfos = new();
8687

88+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
8789
private delegate void RemoveCreateInfoDelegate(IntPtr p);
8890

8991
private static readonly Lazy<(IntPtr Ptr, RemoveCreateInfoDelegate Delegate)> _removeCreateInfoFunc =

src/SqlNotebookScript/Core/CustomFunctionsProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace SqlNotebookScript.Core;
77

88
public static class CustomFunctionsProvider
99
{
10+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1011
private delegate void InvokeAction(IntPtr context, int argc, IntPtr argv);
1112

1213
/// <remarks>We need to keep these alive since they are unmanaged callbacks.</remarks>

src/SqlNotebookScript/Core/GenericModules/GenericModuleProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public sealed class GenericModuleProvider : IDisposable
1717
/// </summary>
1818
private static readonly Dictionary<int, CustomTableFunction> _customTableFunctions = new();
1919

20+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
2021
private delegate void RemoveCustomTableFunctionDelegate(IntPtr p);
2122

2223
private static readonly Lazy<(
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
11
using System;
2+
using System.Runtime.InteropServices;
23

34
namespace SqlNotebookScript.Core.ModuleDelegates;
45

6+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
57
public delegate int ModuleCreateDelegate(IntPtr db, IntPtr pAux, int argc, IntPtr argv, IntPtr ppVTab, IntPtr pzErr);
8+
9+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
610
public delegate int ModuleBestIndexDelegate(IntPtr pVTab, IntPtr infoPtr);
11+
12+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
713
public delegate int ModuleDestroyDelegate(IntPtr pVTab);
14+
15+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
816
public delegate int ModuleOpenDelegate(IntPtr pVTab, IntPtr ppCursor);
17+
18+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
919
public delegate int ModuleCloseDelegate(IntPtr pCur);
20+
21+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1022
public delegate int ModuleFilterDelegate(IntPtr pCur, int idxNum, IntPtr idxStr, int argc, IntPtr argv);
23+
24+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1125
public delegate int ModuleNextDelegate(IntPtr pCur);
26+
27+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1228
public delegate int ModuleEofDelegate(IntPtr pCur);
29+
30+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1331
public delegate int ModuleColumnDelegate(IntPtr pCur, IntPtr ctx, int n);
32+
33+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1434
public delegate int ModuleRowidDelegate(IntPtr pCur, IntPtr pRowid);
35+
36+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1537
public delegate int ModuleRenameDelegate(IntPtr pVtab, IntPtr zNew);

src/SqlNotebookScript/Core/Notebook.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ public sealed class Notebook : IDisposable
2222
// We disable all synchronization in SQLite, so this lock protects any call into SQLite.
2323
private static readonly object _lock = new();
2424

25+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
2526
private delegate void ExecuteGenericFunctionDelegate(IntPtr a, int b, IntPtr c);
27+
2628
private static readonly Lazy<(IntPtr Ptr, ExecuteGenericFunctionDelegate Delegate)> _executeGenericFunctionFunc =
2729
new(() =>
2830
{
@@ -253,6 +255,7 @@ static void LoadExtension(IntPtr db, string filename)
253255
}
254256
}
255257

258+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
256259
private delegate object GenericFunctionExecuteDelegate(IReadOnlyList<object> args);
257260

258261
private void RegisterGenericFunction(CustomScalarFunction scalarFunction)

src/SqlNotebookScript/Core/PreparedStatement.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ namespace SqlNotebookScript.Core;
1313

1414
public sealed class PreparedStatement : IDisposable
1515
{
16+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1617
private delegate void FreeDelegate(IntPtr p);
18+
1719
private static readonly Lazy<(IntPtr Ptr, FreeDelegate Delegate)> _freeFunc =
1820
new(() =>
1921
{

0 commit comments

Comments
 (0)