Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
7b36016a
Kaydet (Commit)
7b36016a
authored
Ara 14, 2018
tarafından
Vladimir Matveev
Kaydeden (comit)
Serhiy Storchaka
Ara 14, 2018
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bpo-31446: Copy command line that should be passed to CreateProcessW(). (GH-11141)
üst
08c2ba07
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
8 deletions
+28
-8
2018-12-12-22-52-34.bpo-31446.l--Fjz.rst
...S.d/next/Library/2018-12-12-22-52-34.bpo-31446.l--Fjz.rst
+2
-0
_winapi.c
Modules/_winapi.c
+20
-4
_winapi.c.h
Modules/clinic/_winapi.c.h
+6
-4
No files found.
Misc/NEWS.d/next/Library/2018-12-12-22-52-34.bpo-31446.l--Fjz.rst
0 → 100644
Dosyayı görüntüle @
7b36016a
Copy command line that was passed to CreateProcessW since this function can
change the content of the input buffer.
Modules/_winapi.c
Dosyayı görüntüle @
7b36016a
...
...
@@ -975,7 +975,8 @@ cleanup:
_winapi.CreateProcess
application_name: Py_UNICODE(accept={str, NoneType})
command_line: Py_UNICODE(accept={str, NoneType})
command_line: object
Can be str or None
proc_attrs: object
Ignored internally, can be None.
thread_attrs: object
...
...
@@ -995,12 +996,12 @@ process ID, and thread ID.
static
PyObject
*
_winapi_CreateProcess_impl
(
PyObject
*
module
,
Py_UNICODE
*
application_name
,
Py
_UNICODE
*
command_line
,
PyObject
*
proc_attrs
,
Py
Object
*
command_line
,
PyObject
*
proc_attrs
,
PyObject
*
thread_attrs
,
BOOL
inherit_handles
,
DWORD
creation_flags
,
PyObject
*
env_mapping
,
Py_UNICODE
*
current_directory
,
PyObject
*
startup_info
)
/*[clinic end generated code: output=
4652a33aff4b0ae1 input=4a43b05038d639bb
]*/
/*[clinic end generated code: output=
2ecaab46a05e3123 input=42ac293eaea03fc4
]*/
{
PyObject
*
ret
=
NULL
;
BOOL
result
;
...
...
@@ -1008,6 +1009,7 @@ _winapi_CreateProcess_impl(PyObject *module, Py_UNICODE *application_name,
STARTUPINFOEXW
si
;
PyObject
*
environment
=
NULL
;
wchar_t
*
wenvironment
;
wchar_t
*
command_line_copy
=
NULL
;
AttributeList
attribute_list
=
{
0
};
ZeroMemory
(
&
si
,
sizeof
(
si
));
...
...
@@ -1042,10 +1044,23 @@ _winapi_CreateProcess_impl(PyObject *module, Py_UNICODE *application_name,
goto
cleanup
;
si
.
lpAttributeList
=
attribute_list
.
attribute_list
;
if
(
PyUnicode_Check
(
command_line
))
{
command_line_copy
=
PyUnicode_AsWideCharString
(
command_line
,
NULL
);
if
(
command_line_copy
==
NULL
)
{
goto
cleanup
;
}
}
else
if
(
command_line
!=
Py_None
)
{
PyErr_Format
(
PyExc_TypeError
,
"CreateProcess() argument 2 must be str or None, not %s"
,
Py_TYPE
(
command_line
)
->
tp_name
);
goto
cleanup
;
}
Py_BEGIN_ALLOW_THREADS
result
=
CreateProcessW
(
application_name
,
command_line
,
command_line
_copy
,
NULL
,
NULL
,
inherit_handles
,
...
...
@@ -1069,6 +1084,7 @@ _winapi_CreateProcess_impl(PyObject *module, Py_UNICODE *application_name,
pi
.
dwThreadId
);
cleanup:
PyMem_Free
(
command_line_copy
);
Py_XDECREF
(
environment
);
freeattributelist
(
&
attribute_list
);
...
...
Modules/clinic/_winapi.c.h
Dosyayı görüntüle @
7b36016a
...
...
@@ -286,6 +286,8 @@ PyDoc_STRVAR(_winapi_CreateProcess__doc__,
"
\n
"
"Create a new process and its primary thread.
\n
"
"
\n
"
" command_line
\n
"
" Can be str or None
\n
"
" proc_attrs
\n
"
" Ignored internally, can be None.
\n
"
" thread_attrs
\n
"
...
...
@@ -299,7 +301,7 @@ PyDoc_STRVAR(_winapi_CreateProcess__doc__,
static
PyObject
*
_winapi_CreateProcess_impl
(
PyObject
*
module
,
Py_UNICODE
*
application_name
,
Py
_UNICODE
*
command_line
,
PyObject
*
proc_attrs
,
Py
Object
*
command_line
,
PyObject
*
proc_attrs
,
PyObject
*
thread_attrs
,
BOOL
inherit_handles
,
DWORD
creation_flags
,
PyObject
*
env_mapping
,
Py_UNICODE
*
current_directory
,
...
...
@@ -310,7 +312,7 @@ _winapi_CreateProcess(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
{
PyObject
*
return_value
=
NULL
;
Py_UNICODE
*
application_name
;
Py
_UNICODE
*
command_line
;
Py
Object
*
command_line
;
PyObject
*
proc_attrs
;
PyObject
*
thread_attrs
;
BOOL
inherit_handles
;
...
...
@@ -319,7 +321,7 @@ _winapi_CreateProcess(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
Py_UNICODE
*
current_directory
;
PyObject
*
startup_info
;
if
(
!
_PyArg_ParseStack
(
args
,
nargs
,
"Z
Z
OOikOZO:CreateProcess"
,
if
(
!
_PyArg_ParseStack
(
args
,
nargs
,
"Z
O
OOikOZO:CreateProcess"
,
&
application_name
,
&
command_line
,
&
proc_attrs
,
&
thread_attrs
,
&
inherit_handles
,
&
creation_flags
,
&
env_mapping
,
&
current_directory
,
&
startup_info
))
{
goto
exit
;
}
...
...
@@ -941,4 +943,4 @@ _winapi_GetFileType(PyObject *module, PyObject *const *args, Py_ssize_t nargs, P
exit:
return
return_value
;
}
/*[clinic end generated code: output=
915dd640329de0c0
input=a9049054013a1b77]*/
/*[clinic end generated code: output=
1568ad4bd625f2af
input=a9049054013a1b77]*/
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