@@ -45,11 +45,13 @@ NvJpegPythonHandle* NvJpegPython_startUpEnv(){
4545}
4646
4747void NvJpegPython_cleanUpEnv (){
48- nvjpegJpegStateDestroy ((__gllobal_NvJpegPython )-> nv_statue );
49- nvjpegEncoderStateDestroy ((__gllobal_NvJpegPython )-> nv_enc_state );
50- nvjpegDestroy ((__gllobal_NvJpegPython )-> nv_handle );
51- free (__gllobal_NvJpegPython );
52- __gllobal_NvJpegPython = NULL ;
48+ if (__gllobal_NvJpegPython != NULL ) {
49+ nvjpegJpegStateDestroy ((__gllobal_NvJpegPython )-> nv_statue );
50+ nvjpegEncoderStateDestroy ((__gllobal_NvJpegPython )-> nv_enc_state );
51+ nvjpegDestroy ((__gllobal_NvJpegPython )-> nv_handle );
52+ free (__gllobal_NvJpegPython );
53+ __gllobal_NvJpegPython = NULL ;
54+ }
5355}
5456
5557NvJpegPythonImage * NvJpegPython_createImage (int width , int height , int nComponent , nvjpegChromaSubsampling_t subsampling ){
@@ -252,12 +254,12 @@ static PyMemberDef NvJpeg_DataMembers[] =
252254 {NULL , 0 , 0 , 0 , NULL }
253255};
254256
255-
256- static void NvJpeg_init (NvJpeg * Self , PyObject * pArgs )
257- {
258- Self -> m_handle = (long long )(NvJpegPython_startUpEnv ());
257+ int NvJpeg_init (NvJpeg * self , PyObject * args , PyObject * kwds ) {
258+ self -> m_handle = (long long )(NvJpegPython_startUpEnv ());
259+ return 0 ;
259260}
260261
262+
261263static void NvJpeg_Destruct (NvJpeg * Self )
262264{
263265 Py_TYPE (Self )-> tp_free ((PyObject * )Self );
@@ -435,25 +437,22 @@ static PyMethodDef NvJpeg_MethodMembers[] =
435437
436438static PyTypeObject NvJpeg_ClassInfo =
437439{
438- PyVarObject_HEAD_INIT (NULL , 0 )"nvjpeg.NvJpeg" ,
439- sizeof (NvJpeg ),
440- 0 ,
441- (destructor )NvJpeg_Destruct ,
442- NULL ,NULL ,NULL ,NULL ,
443- (reprfunc )NvJpeg_Repr ,
444- NULL ,NULL ,NULL ,NULL ,NULL ,
445- (reprfunc )NvJpeg_Str ,
446- NULL ,NULL ,NULL ,
447- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE ,
448- "NvJpeg Python Objects---Extensioned by nvjpeg" ,
449- NULL ,NULL ,NULL ,0 ,NULL ,NULL ,
450- NvJpeg_MethodMembers ,
451- NvJpeg_DataMembers ,
452- NULL ,NULL ,NULL ,NULL ,NULL ,0 ,
453- (initproc )NvJpeg_init ,
454- NULL ,
440+ PyVarObject_HEAD_INIT (NULL , 0 )
441+ .tp_name = "nvjpeg.NvJpeg" ,
442+ .tp_new = PyType_GenericNew ,
443+ .tp_basicsize = sizeof (NvJpeg ),
444+ .tp_dealloc = NvJpeg_Destruct ,
445+ .tp_repr = NvJpeg_Repr ,
446+ .tp_str = NvJpeg_Str ,
447+ .tp_flags = Py_TPFLAGS_DEFAULT ,
448+ .tp_doc = "NvJpeg Python Objects---Extensioned by nvjpeg" ,
449+ .tp_methods = NvJpeg_MethodMembers ,
450+ .tp_members = NvJpeg_DataMembers ,
451+ .tp_init = NvJpeg_init ,
452+ .tp_itemsize = 0 ,
455453};
456454
455+
457456void NvJpeg_module_destroy (void * _ ){
458457 NvJpegPython_cleanUpEnv ();
459458}
@@ -471,18 +470,23 @@ static PyModuleDef ModuleInfo =
471470PyMODINIT_FUNC
472471PyInit_nvjpeg (void ) {
473472 PyObject * pReturn = NULL ;
474- NvJpeg_ClassInfo .tp_new = PyType_GenericNew ;
475473
476-
477- if (PyType_Ready (& NvJpeg_ClassInfo ) < 0 )
474+ if (PyType_Ready (& NvJpeg_ClassInfo ) < 0 )
478475 return NULL ;
479476
480477 pReturn = PyModule_Create (& ModuleInfo );
481478 if (pReturn == NULL )
482479 return NULL ;
483480
484481 Py_INCREF (& ModuleInfo );
485- PyModule_AddObject (pReturn , "NvJpeg" , (PyObject * )& NvJpeg_ClassInfo );
482+
483+ Py_INCREF (& NvJpeg_ClassInfo );
484+ if (PyModule_AddObject (pReturn , "NvJpeg" , (PyObject * )& NvJpeg_ClassInfo ) < 0 ) {
485+ Py_DECREF (& NvJpeg_ClassInfo );
486+ Py_DECREF (pReturn );
487+ return NULL ;
488+ }
489+
486490 import_array ();
487491 return pReturn ;
488492}
0 commit comments