Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
3d03ccf2
Commit
3d03ccf2
authored
Aug 21, 2009
by
Jacek Caban
Committed by
Alexandre Julliard
Aug 21, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
urlmon: Fixed report_data for recursive calls.
parent
6927eecd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
15 deletions
+30
-15
bindprot.c
dlls/urlmon/bindprot.c
+30
-15
No files found.
dlls/urlmon/bindprot.c
View file @
3d03ccf2
...
...
@@ -703,7 +703,7 @@ static HRESULT WINAPI ProtocolHandler_Read(IInternetProtocol *iface, void *pv,
TRACE
(
"(%p)->(%p %u %p)
\n
"
,
This
,
pv
,
cb
,
pcbRead
);
if
(
This
->
buf
)
{
if
(
This
->
buf
_size
)
{
read
=
min
(
cb
,
This
->
buf_size
);
memcpy
(
pv
,
This
->
buf
,
read
);
...
...
@@ -1028,37 +1028,52 @@ static HRESULT report_data(BindProtocol *This, DWORD bscf, ULONG progress, ULONG
return
S_OK
;
if
((
This
->
pi
&
PI_MIMEVERIFICATION
)
&&
!
This
->
reported_mime
)
{
BYTE
buf
[
BUFFER_SIZE
];
DWORD
read
=
0
;
LPWSTR
mime
;
HRESULT
hres
;
if
(
!
This
->
buf
)
{
This
->
buf
=
heap_alloc
(
BUFFER_SIZE
);
if
(
!
This
->
buf
)
return
E_OUTOFMEMORY
;
}
do
{
read
=
0
;
hres
=
IInternetProtocol_Read
(
This
->
protocol
,
This
->
buf
+
This
->
buf_size
,
BUFFER_SIZE
-
This
->
buf_size
,
&
read
);
hres
=
IInternetProtocol_Read
(
This
->
protocol
,
buf
,
sizeof
(
buf
)
-
This
->
buf_size
,
&
read
);
if
(
FAILED
(
hres
)
&&
hres
!=
E_PENDING
)
return
hres
;
if
(
!
This
->
buf
)
{
This
->
buf
=
heap_alloc
(
BUFFER_SIZE
);
if
(
!
This
->
buf
)
return
E_OUTOFMEMORY
;
}
else
if
(
read
+
This
->
buf_size
>
BUFFER_SIZE
)
{
BYTE
*
tmp
;
tmp
=
heap_realloc
(
This
->
buf
,
read
+
This
->
buf_size
);
if
(
!
tmp
)
return
E_OUTOFMEMORY
;
This
->
buf
=
tmp
;
}
memcpy
(
This
->
buf
+
This
->
buf_size
,
buf
,
read
);
This
->
buf_size
+=
read
;
}
while
(
This
->
buf_size
<
MIME_TEST_SIZE
&&
hres
==
S_OK
);
if
(
This
->
buf_size
<
MIME_TEST_SIZE
&&
hres
!=
S_FALSE
)
return
S_OK
;
hres
=
FindMimeFromData
(
NULL
,
This
->
url
,
This
->
buf
,
min
(
This
->
buf_size
,
MIME_TEST_SIZE
),
This
->
mime
,
0
,
&
mime
,
0
);
if
(
FAILED
(
hres
))
return
hres
;
if
(
!
This
->
reported_mime
)
{
hres
=
FindMimeFromData
(
NULL
,
This
->
url
,
This
->
buf
,
min
(
This
->
buf_size
,
MIME_TEST_SIZE
),
This
->
mime
,
0
,
&
mime
,
0
);
if
(
FAILED
(
hres
))
return
hres
;
mime_available
(
This
,
mime
,
TRUE
);
CoTaskMemFree
(
mime
);
mime_available
(
This
,
mime
,
TRUE
);
CoTaskMemFree
(
mime
);
}
}
if
(
!
This
->
protocol_sink
)
return
S_OK
;
return
IInternetProtocolSink_ReportData
(
This
->
protocol_sink
,
bscf
,
progress
,
progress_max
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment