@@ -611,13 +611,9 @@ stringdtype_to_quad_resolve_descriptors(PyObject *NPY_UNUSED(self), PyArray_DTyp
611611 PyArray_Descr *given_descrs[2], PyArray_Descr *loop_descrs[2],
612612 npy_intp *view_offset)
613613{
614- Py_INCREF (given_descrs[0 ]);
615- loop_descrs[0 ] = given_descrs[0 ];
616-
617614 if (given_descrs[1 ] == NULL ) {
618615 loop_descrs[1 ] = (PyArray_Descr *)new_quaddtype_instance (BACKEND_SLEEF);
619616 if (loop_descrs[1 ] == nullptr ) {
620- Py_DECREF (loop_descrs[0 ]);
621617 return (NPY_CASTING)-1 ;
622618 }
623619 }
@@ -626,7 +622,9 @@ stringdtype_to_quad_resolve_descriptors(PyObject *NPY_UNUSED(self), PyArray_DTyp
626622 loop_descrs[1 ] = given_descrs[1 ];
627623 }
628624
629- // no notion of fix length, so always unsafe
625+ Py_INCREF (given_descrs[0 ]);
626+ loop_descrs[0 ] = given_descrs[0 ];
627+
630628 return NPY_UNSAFE_CASTING;
631629}
632630
@@ -695,15 +693,11 @@ quad_to_stringdtype_resolve_descriptors(PyObject *NPY_UNUSED(self), PyArray_DTyp
695693 PyArray_Descr *given_descrs[2], PyArray_Descr *loop_descrs[2],
696694 npy_intp *view_offset)
697695{
698- Py_INCREF (given_descrs[0 ]);
699- loop_descrs[0 ] = given_descrs[0 ];
700-
701696 if (given_descrs[1 ] == NULL ) {
702697 // Default StringDType() already has coerce=True
703698 loop_descrs[1 ] = (PyArray_Descr *)PyObject_CallNoArgs (
704699 (PyObject *)&PyArray_StringDType);
705700 if (loop_descrs[1 ] == NULL ) {
706- Py_DECREF (loop_descrs[0 ]);
707701 return (NPY_CASTING)-1 ;
708702 }
709703 }
@@ -712,6 +706,9 @@ quad_to_stringdtype_resolve_descriptors(PyObject *NPY_UNUSED(self), PyArray_DTyp
712706 loop_descrs[1 ] = given_descrs[1 ];
713707 }
714708
709+ Py_INCREF (given_descrs[0 ]);
710+ loop_descrs[0 ] = given_descrs[0 ];
711+
715712 return NPY_SAFE_CASTING;
716713}
717714
0 commit comments