@@ -1759,52 +1759,78 @@ PyInit_time(void) |
1759 | 1759 |
|
1760 | 1760 | /* Set, or reset, module variables like time.timezone */ |
1761 | 1761 | if (init_timezone(m) < 0) { |
1762 | | - return NULL; |
| 1762 | + goto error; |
1763 | 1763 | } |
1764 | 1764 |
|
1765 | 1765 | #if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES) |
1766 | 1766 |
|
1767 | 1767 | #ifdef CLOCK_REALTIME |
1768 | | - PyModule_AddIntMacro(m, CLOCK_REALTIME); |
| 1768 | + if (PyModule_AddIntMacro(m, CLOCK_REALTIME) < 0) { |
| 1769 | + goto error; |
| 1770 | + } |
1769 | 1771 | #endif |
1770 | 1772 | #ifdef CLOCK_MONOTONIC |
1771 | | - PyModule_AddIntMacro(m, CLOCK_MONOTONIC); |
| 1773 | + if (PyModule_AddIntMacro(m, CLOCK_MONOTONIC) < 0) { |
| 1774 | + goto error; |
| 1775 | + } |
1772 | 1776 | #endif |
1773 | 1777 | #ifdef CLOCK_MONOTONIC_RAW |
1774 | | - PyModule_AddIntMacro(m, CLOCK_MONOTONIC_RAW); |
| 1778 | + if (PyModule_AddIntMacro(m, CLOCK_MONOTONIC_RAW) < 0) { |
| 1779 | + goto error; |
| 1780 | + } |
1775 | 1781 | #endif |
1776 | 1782 | #ifdef CLOCK_HIGHRES |
1777 | | - PyModule_AddIntMacro(m, CLOCK_HIGHRES); |
| 1783 | + if (PyModule_AddIntMacro(m, CLOCK_HIGHRES) < 0) { |
| 1784 | + goto error; |
| 1785 | + } |
1778 | 1786 | #endif |
1779 | 1787 | #ifdef CLOCK_PROCESS_CPUTIME_ID |
1780 | | - PyModule_AddIntMacro(m, CLOCK_PROCESS_CPUTIME_ID); |
| 1788 | + if (PyModule_AddIntMacro(m, CLOCK_PROCESS_CPUTIME_ID) < 0) { |
| 1789 | + goto error; |
| 1790 | + } |
1781 | 1791 | #endif |
1782 | 1792 | #ifdef CLOCK_THREAD_CPUTIME_ID |
1783 | | - PyModule_AddIntMacro(m, CLOCK_THREAD_CPUTIME_ID); |
| 1793 | + if (PyModule_AddIntMacro(m, CLOCK_THREAD_CPUTIME_ID) < 0) { |
| 1794 | + goto error; |
| 1795 | + } |
1784 | 1796 | #endif |
1785 | 1797 | #ifdef CLOCK_PROF |
1786 | | - PyModule_AddIntMacro(m, CLOCK_PROF); |
| 1798 | + if (PyModule_AddIntMacro(m, CLOCK_PROF) < 0) { |
| 1799 | + goto error; |
| 1800 | + } |
1787 | 1801 | #endif |
1788 | 1802 | #ifdef CLOCK_BOOTTIME |
1789 | | - PyModule_AddIntMacro(m, CLOCK_BOOTTIME); |
| 1803 | + if (PyModule_AddIntMacro(m, CLOCK_BOOTTIME) < 0) { |
| 1804 | + goto error; |
| 1805 | + } |
1790 | 1806 | #endif |
1791 | 1807 | #ifdef CLOCK_UPTIME |
1792 | | - PyModule_AddIntMacro(m, CLOCK_UPTIME); |
| 1808 | + if (PyModule_AddIntMacro(m, CLOCK_UPTIME) < 0) { |
| 1809 | + goto error; |
| 1810 | + } |
1793 | 1811 | #endif |
1794 | 1812 | #ifdef CLOCK_UPTIME_RAW |
1795 | | - PyModule_AddIntMacro(m, CLOCK_UPTIME_RAW); |
| 1813 | + if (PyModule_AddIntMacro(m, CLOCK_UPTIME_RAW) < 0) { |
| 1814 | + goto error; |
| 1815 | + } |
1796 | 1816 | #endif |
1797 | 1817 |
|
1798 | 1818 | #endif /* defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES) */ |
1799 | 1819 |
|
1800 | 1820 | if (!initialized) { |
1801 | 1821 | if (PyStructSequence_InitType2(&StructTimeType, |
1802 | | - &struct_time_type_desc) < 0) |
1803 | | - return NULL; |
| 1822 | + &struct_time_type_desc) < 0) { |
| 1823 | + goto error; |
| 1824 | + } |
| 1825 | + } |
| 1826 | + if (PyModule_AddIntConstant(m, "_STRUCT_TM_ITEMS", 11)) { |
| 1827 | + goto error; |
1804 | 1828 | } |
1805 | 1829 | Py_INCREF(&StructTimeType); |
1806 | | - PyModule_AddIntConstant(m, "_STRUCT_TM_ITEMS", 11); |
1807 | | - PyModule_AddObject(m, "struct_time", (PyObject*) &StructTimeType); |
| 1830 | + if (PyModule_AddObject(m, "struct_time", (PyObject*) &StructTimeType)) { |
| 1831 | + Py_DECREF(&StructTimeType); |
| 1832 | + goto error; |
| 1833 | + } |
1808 | 1834 | initialized = 1; |
1809 | 1835 |
|
1810 | 1836 | #if defined(__linux__) && !defined(__GLIBC__) |
@@ -1814,10 +1840,11 @@ PyInit_time(void) |
1814 | 1840 | utc_string = tm.tm_zone; |
1815 | 1841 | #endif |
1816 | 1842 |
|
1817 | | - if (PyErr_Occurred()) { |
1818 | | - return NULL; |
1819 | | - } |
1820 | 1843 | return m; |
| 1844 | + |
| 1845 | +error: |
| 1846 | + Py_DECREF(m); |
| 1847 | + return NULL; |
1821 | 1848 | } |
1822 | 1849 |
|
1823 | 1850 | /* Implement pysleep() for various platforms. |
|