@@ -256,28 +256,31 @@ do { \
256
256
} while (0)
257
257
#endif /* UNIX */
258
258
259
- #if defined(MS_WIN32 ) && !defined(DONT_USE_SEH )
259
+ #if defined(MS_WINDOWS ) && !defined(DONT_USE_SEH )
260
260
static DWORD
261
261
filter_page_exception (EXCEPTION_POINTERS * ptrs , EXCEPTION_RECORD * record )
262
262
{
263
263
* record = * ptrs -> ExceptionRecord ;
264
- if (record -> ExceptionCode == EXCEPTION_IN_PAGE_ERROR
265
- || record -> ExceptionCode == EXCEPTION_ACCESS_VIOLATION ) {
264
+ if (record -> ExceptionCode == EXCEPTION_IN_PAGE_ERROR ||
265
+ record -> ExceptionCode == EXCEPTION_ACCESS_VIOLATION )
266
+ {
266
267
return EXCEPTION_EXECUTE_HANDLER ;
267
268
}
268
269
return EXCEPTION_CONTINUE_SEARCH ;
269
270
}
270
271
271
272
static DWORD
272
- filter_page_exception_method (mmap_object * self , EXCEPTION_POINTERS * ptrs , EXCEPTION_RECORD * record )
273
+ filter_page_exception_method (mmap_object * self , EXCEPTION_POINTERS * ptrs ,
274
+ EXCEPTION_RECORD * record )
273
275
{
274
276
* record = * ptrs -> ExceptionRecord ;
275
- if (record -> ExceptionCode == EXCEPTION_IN_PAGE_ERROR
276
- || record -> ExceptionCode == EXCEPTION_ACCESS_VIOLATION ) {
277
+ if (record -> ExceptionCode == EXCEPTION_IN_PAGE_ERROR ||
278
+ record -> ExceptionCode == EXCEPTION_ACCESS_VIOLATION )
279
+ {
277
280
278
281
ULONG_PTR address = record -> ExceptionInformation [1 ];
279
- if (address >= (ULONG_PTR ) self -> data
280
- && address < (ULONG_PTR ) self -> data + (ULONG_PTR ) self -> size )
282
+ if (address >= (ULONG_PTR ) self -> data &&
283
+ address < (ULONG_PTR ) self -> data + (ULONG_PTR ) self -> size )
281
284
{
282
285
return EXCEPTION_EXECUTE_HANDLER ;
283
286
}
@@ -286,16 +289,16 @@ filter_page_exception_method(mmap_object *self, EXCEPTION_POINTERS *ptrs, EXCEPT
286
289
}
287
290
#endif
288
291
289
- #if defined(MS_WIN32 ) && !defined(DONT_USE_SEH )
292
+ #if defined(MS_WINDOWS ) && !defined(DONT_USE_SEH )
290
293
#define HANDLE_INVALID_MEM (sourcecode ) \
291
294
do { \
292
295
EXCEPTION_RECORD record; \
293
296
__try { \
294
297
sourcecode \
295
298
} \
296
299
__except (filter_page_exception(GetExceptionInformation(), &record)) { \
297
- assert(record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR \
298
- || record.ExceptionCode == EXCEPTION_ACCESS_VIOLATION); \
300
+ assert(record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR || \
301
+ record.ExceptionCode == EXCEPTION_ACCESS_VIOLATION); \
299
302
if (record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR) { \
300
303
NTSTATUS status = (NTSTATUS) record.ExceptionInformation[2]; \
301
304
ULONG code = LsaNtStatusToWinError(status); \
@@ -314,16 +317,16 @@ do { \
314
317
} while (0)
315
318
#endif
316
319
317
- #if defined(MS_WIN32 ) && !defined(DONT_USE_SEH )
320
+ #if defined(MS_WINDOWS ) && !defined(DONT_USE_SEH )
318
321
#define HANDLE_INVALID_MEM_METHOD (self , sourcecode ) \
319
322
do { \
320
323
EXCEPTION_RECORD record; \
321
324
__try { \
322
325
sourcecode \
323
326
} \
324
327
__except (filter_page_exception_method(self, GetExceptionInformation(), &record)) { \
325
- assert(record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR \
326
- || record.ExceptionCode == EXCEPTION_ACCESS_VIOLATION); \
328
+ assert(record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR || \
329
+ record.ExceptionCode == EXCEPTION_ACCESS_VIOLATION); \
327
330
if (record.ExceptionCode == EXCEPTION_IN_PAGE_ERROR) { \
328
331
NTSTATUS status = (NTSTATUS) record.ExceptionInformation[2]; \
329
332
ULONG code = LsaNtStatusToWinError(status); \
@@ -343,39 +346,45 @@ do {
343
346
#endif
344
347
345
348
int
346
- safe_memcpy (void * restrict dest , const void * restrict src , size_t count ) {
349
+ safe_memcpy (void * restrict dest , const void * restrict src , size_t count )
350
+ {
347
351
HANDLE_INVALID_MEM (
348
352
memcpy (dest , src , count );
349
353
);
350
354
return 0 ;
351
355
}
352
356
353
357
int
354
- safe_byte_copy (char * dest , const char * src ) {
358
+ safe_byte_copy (char * dest , const char * src )
359
+ {
355
360
HANDLE_INVALID_MEM (
356
361
* dest = * src ;
357
362
);
358
363
return 0 ;
359
364
}
360
365
361
366
int
362
- safe_memchr (char * * out , const void * ptr , int ch , size_t count ) {
367
+ safe_memchr (char * * out , const void * ptr , int ch , size_t count )
368
+ {
363
369
HANDLE_INVALID_MEM (
364
370
* out = (char * ) memchr (ptr , ch , count );
365
371
);
366
372
return 0 ;
367
373
}
368
374
369
375
int
370
- safe_memmove (void * dest , const void * src , size_t count ) {
376
+ safe_memmove (void * dest , const void * src , size_t count )
377
+ {
371
378
HANDLE_INVALID_MEM (
372
379
memmove (dest , src , count );
373
380
);
374
381
return 0 ;
375
382
}
376
383
377
384
int
378
- safe_copy_from_slice (char * dest , const char * src , Py_ssize_t start , Py_ssize_t step , Py_ssize_t slicelen ) {
385
+ safe_copy_from_slice (char * dest , const char * src , Py_ssize_t start ,
386
+ Py_ssize_t step , Py_ssize_t slicelen )
387
+ {
379
388
HANDLE_INVALID_MEM (
380
389
size_t cur ;
381
390
Py_ssize_t i ;
@@ -387,7 +396,9 @@ safe_copy_from_slice(char *dest, const char *src, Py_ssize_t start, Py_ssize_t s
387
396
}
388
397
389
398
int
390
- safe_copy_to_slice (char * dest , const char * src , Py_ssize_t start , Py_ssize_t step , Py_ssize_t slicelen ) {
399
+ safe_copy_to_slice (char * dest , const char * src , Py_ssize_t start ,
400
+ Py_ssize_t step , Py_ssize_t slicelen )
401
+ {
391
402
HANDLE_INVALID_MEM (
392
403
size_t cur ;
393
404
Py_ssize_t i ;
@@ -401,20 +412,24 @@ safe_copy_to_slice(char *dest, const char *src, Py_ssize_t start, Py_ssize_t ste
401
412
402
413
int
403
414
_safe_PyBytes_Find (Py_ssize_t * out , mmap_object * self , const char * haystack ,
404
- Py_ssize_t len_haystack , const char * needle , Py_ssize_t len_needle ,
405
- Py_ssize_t offset ) {
415
+ Py_ssize_t len_haystack , const char * needle ,
416
+ Py_ssize_t len_needle , Py_ssize_t offset )
417
+ {
406
418
HANDLE_INVALID_MEM_METHOD (self ,
407
419
* out = _PyBytes_Find (haystack , len_haystack , needle , len_needle , offset );
408
420
);
409
421
return 0 ;
410
422
}
411
423
412
424
int
413
- _safe_PyBytes_ReverseFind (Py_ssize_t * out , mmap_object * self , const char * haystack ,
414
- Py_ssize_t len_haystack , const char * needle , Py_ssize_t len_needle ,
415
- Py_ssize_t offset ) {
425
+ _safe_PyBytes_ReverseFind (Py_ssize_t * out , mmap_object * self ,
426
+ const char * haystack , Py_ssize_t len_haystack ,
427
+ const char * needle , Py_ssize_t len_needle ,
428
+ Py_ssize_t offset )
429
+ {
416
430
HANDLE_INVALID_MEM_METHOD (self ,
417
- * out = _PyBytes_ReverseFind (haystack , len_haystack , needle , len_needle , offset );
431
+ * out = _PyBytes_ReverseFind (haystack , len_haystack , needle , len_needle ,
432
+ offset );
418
433
);
419
434
return 0 ;
420
435
}
@@ -505,7 +520,8 @@ mmap_read_method(mmap_object *self,
505
520
if (num_bytes < 0 || num_bytes > remaining )
506
521
num_bytes = remaining ;
507
522
508
- PyObject * result = _safe_PyBytes_FromStringAndSize (self -> data + self -> pos , num_bytes );
523
+ PyObject * result = _safe_PyBytes_FromStringAndSize (self -> data + self -> pos ,
524
+ num_bytes );
509
525
if (result != NULL ) {
510
526
self -> pos += num_bytes ;
511
527
}
@@ -551,7 +567,8 @@ mmap_gfind(mmap_object *self,
551
567
assert (0 <= start && start <= end && end <= self -> size );
552
568
if (_safe_PyBytes_ReverseFind (& index , self ,
553
569
self -> data + start , end - start ,
554
- view .buf , view .len , start ) < 0 ) {
570
+ view .buf , view .len , start ) < 0 )
571
+ {
555
572
result = NULL ;
556
573
}
557
574
else {
@@ -562,7 +579,8 @@ mmap_gfind(mmap_object *self,
562
579
assert (0 <= start && start <= end && end <= self -> size );
563
580
if (_safe_PyBytes_Find (& index , self ,
564
581
self -> data + start , end - start ,
565
- view .buf , view .len , start ) < 0 ) {
582
+ view .buf , view .len , start ) < 0 )
583
+ {
566
584
result = NULL ;
567
585
}
568
586
else {
@@ -1087,7 +1105,9 @@ mmap_protect_method(mmap_object *self, PyObject *args) {
1087
1105
return NULL ;
1088
1106
}
1089
1107
1090
- if (VirtualProtect ((void * ) (self -> data + start ), length , flNewProtect , & flOldProtect ) == 0 ) {
1108
+ if (!VirtualProtect ((void * ) (self -> data + start ), length , flNewProtect ,
1109
+ & flOldProtect ))
1110
+ {
1091
1111
PyErr_SetFromWindowsErr (GetLastError ());
1092
1112
return NULL ;
1093
1113
}
@@ -1263,7 +1283,9 @@ mmap_subscript(mmap_object *self, PyObject *item)
1263
1283
if (result_buf == NULL )
1264
1284
return PyErr_NoMemory ();
1265
1285
1266
- if (safe_copy_to_slice (result_buf , self -> data , start , step , slicelen ) < 0 ) {
1286
+ if (safe_copy_to_slice (result_buf , self -> data , start , step ,
1287
+ slicelen ) < 0 )
1288
+ {
1267
1289
result = NULL ;
1268
1290
}
1269
1291
else {
@@ -1390,7 +1412,9 @@ mmap_ass_subscript(mmap_object *self, PyObject *item, PyObject *value)
1390
1412
}
1391
1413
}
1392
1414
else {
1393
- if (safe_copy_from_slice (self -> data , (char * )vbuf .buf , start , step , slicelen ) < 0 ) {
1415
+ if (safe_copy_from_slice (self -> data , (char * )vbuf .buf , start , step ,
1416
+ slicelen ) < 0 )
1417
+ {
1394
1418
result = -1 ;
1395
1419
}
1396
1420
}
0 commit comments