@@ -2079,7 +2079,8 @@ _imp_find_frozen_impl(PyObject *module, PyObject *name)
2079
2079
return NULL ;
2080
2080
}
2081
2081
2082
- PyObject * data = PyBytes_FromStringAndSize (info .data , info .size );
2082
+ PyObject * data = PyMemoryView_FromMemory ((char * )info .data , info .size ,
2083
+ PyBUF_READ );
2083
2084
if (data == NULL ) {
2084
2085
return NULL ;
2085
2086
}
@@ -2116,15 +2117,15 @@ _imp_get_frozen_object_impl(PyObject *module, PyObject *name,
2116
2117
PyObject * dataobj )
2117
2118
/*[clinic end generated code: output=54368a673a35e745 input=034bdb88f6460b7b]*/
2118
2119
{
2119
- struct frozen_info info ;
2120
+ struct frozen_info info = {} ;
2120
2121
if (PyBytes_Check (dataobj )) {
2121
- info .nameobj = name ;
2122
2122
info .data = PyBytes_AS_STRING (dataobj );
2123
2123
info .size = PyBytes_Size (dataobj );
2124
- if (info .size == 0 ) {
2125
- set_frozen_error (FROZEN_INVALID , name );
2126
- return NULL ;
2127
- }
2124
+ }
2125
+ else if (PyMemoryView_Check (dataobj )) {
2126
+ Py_buffer * buf = PyMemoryView_GET_BUFFER (dataobj );
2127
+ info .data = (const char * )buf -> buf ;
2128
+ info .size = buf -> len ;
2128
2129
}
2129
2130
else if (dataobj != Py_None ) {
2130
2131
_PyArg_BadArgument ("get_frozen_object" , "argument 2" , "bytes" , dataobj );
@@ -2137,6 +2138,15 @@ _imp_get_frozen_object_impl(PyObject *module, PyObject *name,
2137
2138
return NULL ;
2138
2139
}
2139
2140
}
2141
+
2142
+ if (info .nameobj == NULL ) {
2143
+ info .nameobj = name ;
2144
+ }
2145
+ if (info .size == 0 ) {
2146
+ set_frozen_error (FROZEN_INVALID , name );
2147
+ return NULL ;
2148
+ }
2149
+
2140
2150
return unmarshal_frozen_code (& info );
2141
2151
}
2142
2152
0 commit comments