Commit 53cee9f2 authored by tomas@whalegate.ndb.mysql.com's avatar tomas@whalegate.ndb.mysql.com
Browse files

Construction does not work on hpux aCC, so some refactoring

parent 83788136
Loading
Loading
Loading
Loading
+1 −12
Original line number Diff line number Diff line
@@ -1051,18 +1051,7 @@ class Ndb
  friend class NdbDictionaryImpl;
  friend class NdbDictInterface;
  friend class NdbBlob;
  friend class Ndb_free_list_t<NdbRecAttr>;  
  friend class Ndb_free_list_t<NdbApiSignal>;
  friend class Ndb_free_list_t<NdbLabel>;
  friend class Ndb_free_list_t<NdbBranch>;
  friend class Ndb_free_list_t<NdbSubroutine>;
  friend class Ndb_free_list_t<NdbCall>;
  friend class Ndb_free_list_t<NdbBlob>;
  friend class Ndb_free_list_t<NdbReceiver>;
  friend class Ndb_free_list_t<NdbIndexScanOperation>;
  friend class Ndb_free_list_t<NdbOperation>;
  friend class Ndb_free_list_t<NdbIndexOperation>;
  friend class Ndb_free_list_t<NdbTransaction>;
  friend class NdbImpl;
#endif

public:
+12 −3
Original line number Diff line number Diff line
@@ -89,6 +89,15 @@ public:
    return 0;
  }

/*
  We need this friend accessor function to work around a HP compiler problem,
  where template class friends are not working.
*/
  static inline void setNdbError(Ndb &ndb,int code){
    ndb.theError.code = code;
    return;
  }

  /**
   * NOTE free lists must be _after_ theNdbObjectIdMap take
   *   assure that destructors are run in correct order
@@ -208,7 +217,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
    m_free_list = new T(ndb);
    if (m_free_list == 0)
    {
      ndb->theError.code = 4000;
      NdbImpl::setNdbError(*ndb, 4000);
      assert(false);
      return -1;
    }
@@ -218,7 +227,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
    T* obj= new T(ndb);
    if(obj == 0)
    {
      ndb->theError.code = 4000;
      NdbImpl::setNdbError(*ndb, 4000);
      assert(false);
      return -1;
    }
@@ -250,7 +259,7 @@ Ndb_free_list_t<T>::seize(Ndb* ndb)
  }
  else
  {
    ndb->theError.code = 4000;
    NdbImpl::setNdbError(*ndb, 4000);
    assert(false);
  }
  return tmp;