~stepankk/pyopenssl/bug-845445

« back to all changes in this revision

Viewing changes to OpenSSL/crypto/crypto.c

  • Committer: Jean-Paul Calderone
  • Date: 2011-04-25 23:41:32 UTC
  • mfrom: (128.2.10 run-on-pypy)
  • Revision ID: exarkun@divmod.com-20110425234132-0f76yf59poaegjxu
Various fixes which make pyOpenSSL more likely to work with PyPy

  * Fix a consistent refcounting bug across most modules
  * switch from tp_setattr to tp_setattro
  * Fix a general bug in error handling when setting invalid X509Name attributes

Show diffs side-by-side

added added

removed removed

Lines of Context:
836
836
    crypto_API[crypto_PKCS7_New_NUM]     = (void *)crypto_PKCS7_New;
837
837
    crypto_API[crypto_NetscapeSPKI_New_NUM]     = (void *)crypto_NetscapeSPKI_New;
838
838
    c_api_object = PyCObject_FromVoidPtr((void *)crypto_API, NULL);
839
 
    if (c_api_object != NULL)
 
839
    if (c_api_object != NULL) {
 
840
        /* PyModule_AddObject steals a reference.
 
841
         */
 
842
        Py_INCREF(c_api_object);
840
843
        PyModule_AddObject(module, "_C_API", c_api_object);
 
844
    }
841
845
#endif
842
846
 
843
847
    crypto_Error = PyErr_NewException("OpenSSL.crypto.Error", NULL, NULL);
844
848
    if (crypto_Error == NULL)
845
849
        goto error;
 
850
 
 
851
    /* PyModule_AddObject steals a reference.
 
852
     */
 
853
    Py_INCREF(crypto_Error);
846
854
    if (PyModule_AddObject(module, "Error", crypto_Error) != 0)
847
855
        goto error;
848
856