The things aren't as bad as I thought there are. Here is an update on this issue. The key difference to my previous post is: only objects that have DESTROY method may need to be dealt with. Below is the analysis of the relevant classes and methods.

* we need to deal with a situation where an object is used to
  construct another object, but it's then auto-DESTROYed by perl
  rendering the object that used it corrupted.

  the solution is to make the newly created objects refer to the
  underlying object via magic attachment.

  only objects using objects that have DESTROY are effected, so for
  example in the case of:

  APR::Bucket::eos_create(APR::Bucket::alloc_create(APR::Pool->new)

  the object returned by eos_create shouldn't be affected, since
  alloc_create()'s object doesn't have perl's DESTROY. so only the
  pool object is an issue here (i.e. alloc_create needs special
  handling)

  relevant objects with DESTROY : Apache::SubRequest,
  APR::ThreadMutex, APR::UUID, APR::Pool


================= === APR::Pool === ================= *** returning objects ***

  APR::Brigade:
  - mpxs_apr_brigade_create

  APR::Bucket:
  - apr_bucket_alloc_create
  - mpxs_APR__Bucket_setaside

  APR::Finfo:
  - mpxs_APR__Finfo_stat

  APR::IpSubnet:
  - mpxs_apr_ipsubnet_create

  APR::Pool:
  - mpxs_apr_pool_create (not sure about this one)

  Apache::RequestUtil:
  - mpxs_Apache__RequestRec_new

  APR::Table:
  - apr_table_copy
  - apr_table_overlay
  - apr_table_make

  APR::ThreadMutex
  - mpxs_apr_thread_mutex_create

  *** returning strings ***

  Apache::ServerUtil
  - mpxs_Apache__ServerUtil_server_root_relative (once this is
    supported, we no longer need to double copy the string)

  Apache::URI:
  - ap_construct_server
  - ap_construct_url

  APR::URI
  - mpxs_apr_uri_parse

  Apache::Util
  - ap_ht_time
  - escape_path


========================== === Apache::SubRequest === ========================== no method uses the object in a way related to the issue in hand

  =================
  === APR::UUID ===
  =================
  no method uses the object in a way related to the issue in hand

  ========================
  === APR::ThreadMutex ===
  ========================
  no method uses the object in a way related to the issue in hand


-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to