[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#8270) win32: fix conversion error



--f46d043895179821ec05228f3c91
Content-Type: text/plain; charset=UTF-8

On Tue, Oct 20, 2015 at 10:09 PM, Howard Chu <hyc@symas.com> wrote:

> nacho.resa@gmail.com wrote:
>
>> --047d7bb03a5ac118d20522842ead
>> Content-Type: text/plain; charset=UTF-8
>>
>> So I took another closer look at this issue and I went for this possible
>> solution:
>>
>> https://github.com/nice-software/lmdb/commit/03987789735141dc68ae8b2d0e5ad52d82cc80d0
>>
>
> That looks OK.
>
> Basically it errors out because MSVC needs stdcall on that method.
>>
>
> You realize of course, that this change actually has no effect on the code
> here? stdcall uses Pascal argument order instead of C order but it's moot
> since the function only has 1 argument.
>

yeah... but if this fixes the error I am fine with it, after all it end ups
being just a define


>
>
>> Cheers.
>>
>> On Mon, Oct 19, 2015 at 2:55 PM, Ignacio Casal Quinteiro <
>> nacho.resa@gmail.com> wrote:
>>
>> Sorry! I did indeed meant to change just the windows part, for some reason
>>> I thought it was already ifdeffed that part.
>>>
>>>
>>> https://github.com/nice-software/lmdb/commit/42577fe173923c1166f8382a53523a31479f9d43
>>>
>>> This is the right patch.
>>>
>>> On Mon, Oct 19, 2015 at 1:43 PM, Hallvard Breien Furuseth <
>>> h.b.furuseth@usit.uio.no> wrote:
>>>
>>> On 19. okt. 2015 08:57, nacho.resa@gmail.com wrote:
>>>>
>>>> I do not understand, I tested also with mingw64 (...)
>>>>>
>>>>>
>>>> There's no LPTHREAD_START_ROUTINE type on non-Windows machines.
>>>> You could replace 'start' with '(LPTHREAD_START_ROUTINE)(start)'
>>>> in the _WIN32 variant of '#define THREAD_CREATE...'.
>>>>
>>>> However, it's still wrong to call a function via another prototype.
>>>> Maybe that'd fall on 32-bit Windows or something, I don't know
>>>> how LPTHREAD_START_ROUTINE is defined.  The safe way would be to
>>>> give mdb_env_copythr() a prototype which does not need a cast.
>>>> There is some code for that already. Maybe it can be improved.
>>>>
>>>> --
>>>> Hallvard
>>>>
>>>>
>>>
>>>
>>> --
>>> Ignacio Casal Quinteiro
>>>
>>>
>>
>>
>>
>
> --
>   -- Howard Chu
>   CTO, Symas Corp.           http://www.symas.com
>   Director, Highland Sun     http://highlandsun.com/hyc/
>   Chief Architect, OpenLDAP  http://www.openldap.org/project/
>



-- 
Ignacio Casal Quinteiro

--f46d043895179821ec05228f3c91
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Oct 20, 2015 at 10:09 PM, Howard Chu <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:hyc@symas.com"; target=3D"_blank">hyc@symas.com</a>&gt;</span>=
 wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bor=
der-left:1px #ccc solid;padding-left:1ex"><a href=3D"mailto:nacho.resa@gmai=
l.com" target=3D"_blank">nacho.resa@gmail.com</a> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
--047d7bb03a5ac118d20522842ead<br>
Content-Type: text/plain; charset=3DUTF-8<span class=3D""><br>
<br>
So I took another closer look at this issue and I went for this possible<br=
>
solution:<br>
<a href=3D"https://github.com/nice-software/lmdb/commit/03987789735141dc68a=
e8b2d0e5ad52d82cc80d0" rel=3D"noreferrer" target=3D"_blank">https://github.=
com/nice-software/lmdb/commit/03987789735141dc68ae8b2d0e5ad52d82cc80d0</a><=
br>
</span></blockquote>
<br>
That looks OK.<span class=3D""><br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Basically it errors out because MSVC needs stdcall on that method.<br>
</blockquote>
<br></span>
You realize of course, that this change actually has no effect on the code =
here? stdcall uses Pascal argument order instead of C order but it&#39;s mo=
ot since the function only has 1 argument.<span class=3D"im HOEnZb"><br></s=
pan></blockquote><div><br></div><div>yeah... but if this fixes the error I =
am fine with it, after all it end ups being just a define<br></div><div>=C2=
=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;borde=
r-left:1px #ccc solid;padding-left:1ex"><span class=3D"im HOEnZb">
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
Cheers.<br>
<br>
On Mon, Oct 19, 2015 at 2:55 PM, Ignacio Casal Quinteiro &lt;<br>
<a href=3D"mailto:nacho.resa@gmail.com"; target=3D"_blank">nacho.resa@gmail.=
com</a>&gt; wrote:<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Sorry! I did indeed meant to change just the windows part, for some reason<=
br>
I thought it was already ifdeffed that part.<br>
<br>
<a href=3D"https://github.com/nice-software/lmdb/commit/42577fe173923c1166f=
8382a53523a31479f9d43" rel=3D"noreferrer" target=3D"_blank">https://github.=
com/nice-software/lmdb/commit/42577fe173923c1166f8382a53523a31479f9d43</a><=
br>
<br>
This is the right patch.<br>
<br>
On Mon, Oct 19, 2015 at 1:43 PM, Hallvard Breien Furuseth &lt;<br>
<a href=3D"mailto:h.b.furuseth@usit.uio.no"; target=3D"_blank">h.b.furuseth@=
usit.uio.no</a>&gt; wrote:<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
On 19. okt. 2015 08:57, <a href=3D"mailto:nacho.resa@gmail.com"; target=3D"_=
blank">nacho.resa@gmail.com</a> wrote:<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
I do not understand, I tested also with mingw64 (...)<br>
<br>
</blockquote>
<br>
There&#39;s no LPTHREAD_START_ROUTINE type on non-Windows machines.<br>
You could replace &#39;start&#39; with &#39;(LPTHREAD_START_ROUTINE)(start)=
&#39;<br>
in the _WIN32 variant of &#39;#define THREAD_CREATE...&#39;.<br>
<br>
However, it&#39;s still wrong to call a function via another prototype.<br>
Maybe that&#39;d fall on 32-bit Windows or something, I don&#39;t know<br>
how LPTHREAD_START_ROUTINE is defined.=C2=A0 The safe way would be to<br>
give mdb_env_copythr() a prototype which does not need a cast.<br>
There is some code for that already. Maybe it can be improved.<br>
<br>
--<br>
Hallvard<br>
<br>
</blockquote>
<br>
<br>
<br>
--<br>
Ignacio Casal Quinteiro<br>
<br>
</blockquote>
<br>
<br>
<br>
</blockquote>
<br>
<br>
-- <br></span><div class=3D"HOEnZb"><div class=3D"h5">
=C2=A0 -- Howard Chu<br>
=C2=A0 CTO, Symas Corp.=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"=
http://www.symas.com"; rel=3D"noreferrer" target=3D"_blank">http://www.symas=
.com</a><br>
=C2=A0 Director, Highland Sun=C2=A0 =C2=A0 =C2=A0<a href=3D"http://highland=
sun.com/hyc/" rel=3D"noreferrer" target=3D"_blank">http://highlandsun.com/h=
yc/</a><br>
=C2=A0 Chief Architect, OpenLDAP=C2=A0 <a href=3D"http://www.openldap.org/p=
roject/" rel=3D"noreferrer" target=3D"_blank">http://www.openldap.org/proje=
ct/</a><br>
</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br><div class=
=3D"gmail_signature">Ignacio Casal Quinteiro</div>
</div></div>

--f46d043895179821ec05228f3c91--