#include<new>
#include"X_new.h"



boost::pool<> X::pool(sizeof(X));

void * X::operator new(size_t size) throw(std::bad_alloc)  {
  while(1) {
    void *p = pool.malloc();
    if(p) return p;
    std::new_handler handler = std::set_new_handler(0);
    std::set_new_handler(handler);
    if(handler)
      handler();
    else   
      throw std::bad_alloc();    
  }   
}

void X::operator delete(void *p) throw() {
  if(p)
    pool.free(p);
}

