@@ -1509,139 +1509,142 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict)
1509
1509
}
1510
1510
#endif /* MS_WINDOWS */
1511
1511
1512
- static void
1513
- setint (PyObject * d , const char * name , long value )
1514
- {
1515
- PyObject * o = PyLong_FromLong (value );
1516
- if (o ) {
1517
- PyDict_SetItemString (d , name , o );
1518
- Py_DECREF (o );
1519
- }
1520
- }
1521
-
1522
1512
static int
1523
1513
mmap_exec (PyObject * module )
1524
1514
{
1525
1515
if (PyType_Ready (& mmap_object_type ) < 0 ) {
1526
1516
return -1 ;
1527
1517
}
1528
1518
1529
- PyObject * dict = PyModule_GetDict (module );
1530
- if (!dict ) {
1519
+ if (PyModule_AddObject (module , "error" , PyExc_OSError ) < 0 ) {
1531
1520
return -1 ;
1532
1521
}
1533
- PyDict_SetItemString (dict , "error" , PyExc_OSError );
1534
- PyDict_SetItemString (dict , "mmap" , (PyObject * ) & mmap_object_type );
1522
+ if (PyModule_AddType (module , & mmap_object_type ) < 0 ) {
1523
+ return -1 ;
1524
+ }
1525
+
1526
+ #define ADD_INT_MACRO (module , macro ) \
1527
+ do { \
1528
+ if (PyModule_AddIntConstant(module, #macro, macro) < 0) { \
1529
+ return -1; \
1530
+ } \
1531
+ } while (0)
1532
+
1535
1533
#ifdef PROT_EXEC
1536
- setint ( dict , "PROT_EXEC" , PROT_EXEC );
1534
+ ADD_INT_MACRO ( module , PROT_EXEC );
1537
1535
#endif
1538
1536
#ifdef PROT_READ
1539
- setint ( dict , "PROT_READ" , PROT_READ );
1537
+ ADD_INT_MACRO ( module , PROT_READ );
1540
1538
#endif
1541
1539
#ifdef PROT_WRITE
1542
- setint ( dict , "PROT_WRITE" , PROT_WRITE );
1540
+ ADD_INT_MACRO ( module , PROT_WRITE );
1543
1541
#endif
1544
1542
1545
1543
#ifdef MAP_SHARED
1546
- setint ( dict , "MAP_SHARED" , MAP_SHARED );
1544
+ ADD_INT_MACRO ( module , MAP_SHARED );
1547
1545
#endif
1548
1546
#ifdef MAP_PRIVATE
1549
- setint ( dict , "MAP_PRIVATE" , MAP_PRIVATE );
1547
+ ADD_INT_MACRO ( module , MAP_PRIVATE );
1550
1548
#endif
1551
1549
#ifdef MAP_DENYWRITE
1552
- setint ( dict , "MAP_DENYWRITE" , MAP_DENYWRITE );
1550
+ ADD_INT_MACRO ( module , MAP_DENYWRITE );
1553
1551
#endif
1554
1552
#ifdef MAP_EXECUTABLE
1555
- setint ( dict , "MAP_EXECUTABLE" , MAP_EXECUTABLE );
1553
+ ADD_INT_MACRO ( module , MAP_EXECUTABLE );
1556
1554
#endif
1557
1555
#ifdef MAP_ANONYMOUS
1558
- setint (dict , "MAP_ANON" , MAP_ANONYMOUS );
1559
- setint (dict , "MAP_ANONYMOUS" , MAP_ANONYMOUS );
1556
+ if (PyModule_AddIntConstant (module , "MAP_ANON" , MAP_ANONYMOUS ) < 0 ) {
1557
+ return -1 ;
1558
+ }
1559
+ ADD_INT_MACRO (module , MAP_ANONYMOUS );
1560
1560
#endif
1561
1561
#ifdef MAP_POPULATE
1562
- setint ( dict , "MAP_POPULATE" , MAP_POPULATE );
1562
+ ADD_INT_MACRO ( module , MAP_POPULATE );
1563
1563
#endif
1564
+ if (PyModule_AddIntConstant (module , "PAGESIZE" , (long )my_getpagesize ()) < 0 ) {
1565
+ return -1 ;
1566
+ }
1564
1567
1565
- setint ( dict , "PAGESIZE " , (long )my_getpagesize ());
1566
-
1567
- setint ( dict , "ALLOCATIONGRANULARITY" , ( long ) my_getallocationgranularity ());
1568
+ if ( PyModule_AddIntConstant ( module , "ALLOCATIONGRANULARITY " , (long )my_getallocationgranularity ()) < 0 ) {
1569
+ return -1 ;
1570
+ }
1568
1571
1569
- setint ( dict , "ACCESS_DEFAULT" , ACCESS_DEFAULT );
1570
- setint ( dict , "ACCESS_READ" , ACCESS_READ );
1571
- setint ( dict , "ACCESS_WRITE" , ACCESS_WRITE );
1572
- setint ( dict , "ACCESS_COPY" , ACCESS_COPY );
1572
+ ADD_INT_MACRO ( module , ACCESS_DEFAULT );
1573
+ ADD_INT_MACRO ( module , ACCESS_READ );
1574
+ ADD_INT_MACRO ( module , ACCESS_WRITE );
1575
+ ADD_INT_MACRO ( module , ACCESS_COPY );
1573
1576
1574
1577
#ifdef HAVE_MADVISE
1575
1578
// Conventional advice values
1576
1579
#ifdef MADV_NORMAL
1577
- setint ( dict , "MADV_NORMAL" , MADV_NORMAL );
1580
+ ADD_INT_MACRO ( module , MADV_NORMAL );
1578
1581
#endif
1579
1582
#ifdef MADV_RANDOM
1580
- setint ( dict , "MADV_RANDOM" , MADV_RANDOM );
1583
+ ADD_INT_MACRO ( module , MADV_RANDOM );
1581
1584
#endif
1582
1585
#ifdef MADV_SEQUENTIAL
1583
- setint ( dict , "MADV_SEQUENTIAL" , MADV_SEQUENTIAL );
1586
+ ADD_INT_MACRO ( module , MADV_SEQUENTIAL );
1584
1587
#endif
1585
1588
#ifdef MADV_WILLNEED
1586
- setint ( dict , "MADV_WILLNEED" , MADV_WILLNEED );
1589
+ ADD_INT_MACRO ( module , MADV_WILLNEED );
1587
1590
#endif
1588
1591
#ifdef MADV_DONTNEED
1589
- setint ( dict , "MADV_DONTNEED" , MADV_DONTNEED );
1592
+ ADD_INT_MACRO ( module , MADV_DONTNEED );
1590
1593
#endif
1591
1594
1592
1595
// Linux-specific advice values
1593
1596
#ifdef MADV_REMOVE
1594
- setint ( dict , "MADV_REMOVE" , MADV_REMOVE );
1597
+ ADD_INT_MACRO ( module , MADV_REMOVE );
1595
1598
#endif
1596
1599
#ifdef MADV_DONTFORK
1597
- setint ( dict , "MADV_DONTFORK" , MADV_DONTFORK );
1600
+ ADD_INT_MACRO ( module , MADV_DONTFORK );
1598
1601
#endif
1599
1602
#ifdef MADV_DOFORK
1600
- setint ( dict , "MADV_DOFORK" , MADV_DOFORK );
1603
+ ADD_INT_MACRO ( module , MADV_DOFORK );
1601
1604
#endif
1602
1605
#ifdef MADV_HWPOISON
1603
- setint ( dict , "MADV_HWPOISON" , MADV_HWPOISON );
1606
+ ADD_INT_MACRO ( module , MADV_HWPOISON );
1604
1607
#endif
1605
1608
#ifdef MADV_MERGEABLE
1606
- setint ( dict , "MADV_MERGEABLE" , MADV_MERGEABLE );
1609
+ ADD_INT_MACRO ( module , MADV_MERGEABLE );
1607
1610
#endif
1608
1611
#ifdef MADV_UNMERGEABLE
1609
- setint ( dict , "MADV_UNMERGEABLE" , MADV_UNMERGEABLE );
1612
+ ADD_INT_MACRO ( module , MADV_UNMERGEABLE );
1610
1613
#endif
1611
1614
#ifdef MADV_SOFT_OFFLINE
1612
- setint ( dict , "MADV_SOFT_OFFLINE" , MADV_SOFT_OFFLINE );
1615
+ ADD_INT_MACRO ( module , MADV_SOFT_OFFLINE );
1613
1616
#endif
1614
1617
#ifdef MADV_HUGEPAGE
1615
- setint ( dict , "MADV_HUGEPAGE" , MADV_HUGEPAGE );
1618
+ ADD_INT_MACRO ( module , MADV_HUGEPAGE );
1616
1619
#endif
1617
1620
#ifdef MADV_NOHUGEPAGE
1618
- setint ( dict , "MADV_NOHUGEPAGE" , MADV_NOHUGEPAGE );
1621
+ ADD_INT_MACRO ( module , MADV_NOHUGEPAGE );
1619
1622
#endif
1620
1623
#ifdef MADV_DONTDUMP
1621
- setint ( dict , "MADV_DONTDUMP" , MADV_DONTDUMP );
1624
+ ADD_INT_MACRO ( module , MADV_DONTDUMP );
1622
1625
#endif
1623
1626
#ifdef MADV_DODUMP
1624
- setint ( dict , "MADV_DODUMP" , MADV_DODUMP );
1627
+ ADD_INT_MACRO ( module , MADV_DODUMP );
1625
1628
#endif
1626
1629
#ifdef MADV_FREE // (Also present on FreeBSD and macOS.)
1627
- setint ( dict , "MADV_FREE" , MADV_FREE );
1630
+ ADD_INT_MACRO ( module , MADV_FREE );
1628
1631
#endif
1629
1632
1630
1633
// FreeBSD-specific
1631
1634
#ifdef MADV_NOSYNC
1632
- setint ( dict , "MADV_NOSYNC" , MADV_NOSYNC );
1635
+ ADD_INT_MACRO ( module , MADV_NOSYNC );
1633
1636
#endif
1634
1637
#ifdef MADV_AUTOSYNC
1635
- setint ( dict , "MADV_AUTOSYNC" , MADV_AUTOSYNC );
1638
+ ADD_INT_MACRO ( module , MADV_AUTOSYNC );
1636
1639
#endif
1637
1640
#ifdef MADV_NOCORE
1638
- setint ( dict , "MADV_NOCORE" , MADV_NOCORE );
1641
+ ADD_INT_MACRO ( module , MADV_NOCORE );
1639
1642
#endif
1640
1643
#ifdef MADV_CORE
1641
- setint ( dict , "MADV_CORE" , MADV_CORE );
1644
+ ADD_INT_MACRO ( module , MADV_CORE );
1642
1645
#endif
1643
1646
#ifdef MADV_PROTECT
1644
- setint ( dict , "MADV_PROTECT" , MADV_PROTECT );
1647
+ ADD_INT_MACRO ( module , MADV_PROTECT );
1645
1648
#endif
1646
1649
#endif // HAVE_MADVISE
1647
1650
return 0 ;
@@ -1663,4 +1666,4 @@ PyMODINIT_FUNC
1663
1666
PyInit_mmap (void )
1664
1667
{
1665
1668
return PyModuleDef_Init (& mmapmodule );
1666
- }
1669
+ }
0 commit comments