Issue #18408: Fix PyCode_Optimize(): raise a MemoryError on memory allocation
failure.
diff --git a/Python/peephole.c b/Python/peephole.c
index e6877bb..a49790a 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -381,8 +381,10 @@
 
     /* Make a modifiable copy of the code string */
     codestr = (unsigned char *)PyMem_Malloc(codelen);
-    if (codestr == NULL)
+    if (codestr == NULL) {
+        PyErr_NoMemory();
         goto exitError;
+    }
     codestr = (unsigned char *)memcpy(codestr,
                                       PyBytes_AS_STRING(code), codelen);
 
@@ -396,8 +398,10 @@
 
     /* Mapping to new jump targets after NOPs are removed */
     addrmap = (int *)PyMem_Malloc(codelen * sizeof(int));
-    if (addrmap == NULL)
+    if (addrmap == NULL) {
+        PyErr_NoMemory();
         goto exitError;
+    }
 
     blocks = markblocks(codestr, codelen);
     if (blocks == NULL)