Ejemplo n.º 1
0
static void m_deepin_lunar_dealloc(DeepinLunarObject *self) 
{
    PyObject_GC_UnTrack(self);
    Py_TRASHCAN_SAFE_BEGIN(self)

    ZAP(self->dict);
    m_delete(self);

    PyObject_GC_Del(self);
    Py_TRASHCAN_SAFE_END(self)
}
Ejemplo n.º 2
0
void read_call_back(int sock,string s,string peer)
{
  int req, port;
  string msg, full_data, id, who, ip, data;
  object player;

#ifdef DEBUG
  tell_room(environment(),"Identd got: "+s+" from "+peer+".\n");
#endif
  if(peer != IDENTSERVER) return;

  if(sscanf(s,"%d %d%*s:%s:%*s:%s", req, port, msg, full_data) == 6)
  {
    if(sscanf(lower_case(msg),"%*serror%*s"))
      return;
    
    sscanf(full_data,"%s\r",full_data);
    sscanf(full_data,"%s\n",full_data);
    sscanf(full_data," %s",full_data);
    sscanf(data=full_data,"%s,",data);
    sscanf(data,"%s ",data);
    if(data[0]=='[' && data[-1]==']')
    {
      data="[]";
    }

    id=requests[req];
    if(!id) return;
    sscanf(id,"%s@%s",who,ip);
    player=find_player(who);
    if(!player) return;
    if(query_ip_number(player) != ip) return;
    if(query_ip_port(player) != port+"") return;

    ident_info[id]=data;
    requests=m_delete(requests,id);
    requests=m_delete(requests,req);
    player->set_ident(full_data);
    tell_room(environment(),"The identdaemon finds out that "+capitalize(who)+" is called "+full_data+".\n");
  }
}
Ejemplo n.º 3
0
 // returns true if the queue was empty
 enqueue_result enqueue(pointer new_element) {
     pointer e = m_stack.load();
     for (;;) {
         if (!e) {
             // if tail is nullptr, the queue has been closed
             m_delete(new_element);
             return enqueue_result::queue_closed;
         }
         new_element->next = is_dummy(e) ? nullptr : e;
         if (m_stack.compare_exchange_weak(e, new_element)) {
             return (e == reader_blocked_dummy())
                     ? enqueue_result::unblocked_reader
                     : enqueue_result::success;
         }
     }
 }
Ejemplo n.º 4
0
 void remove_if(UnaryPredicate f) {
     pointer head = m_head;
     pointer last = nullptr;
     pointer p = m_head;
     auto loop = [&]() -> bool {
         while (p) {
             if (f(*p)) {
                 if (last == nullptr) m_head = p->next;
                 else last = p->next;
                 m_delete(p);
                 return true;
             }
             else {
                 last = p;
                 p = p->next;
             }
         }
         return false;
     };
     if (!loop()) {
         // last points to the tail now
         auto old_tail = last;
         m_head = nullptr; // fetch_new_data assumes cached list to be empty
         if (fetch_new_data()) {
             last = nullptr;
             p = m_head; // let p point to the first newly fetched element
             loop();
             // restore cached list
             if (head) {
                 old_tail->next = m_head;
                 m_head = head;
             }
         }
         else m_head = head;
     }
 }
 iterator erase(iterator pos) {
     auto next = pos->next;
     m_delete(take(pos));
     return next;
 }
Ejemplo n.º 6
0
void remove_landmark( string name ) {
   if( !mappingp(landmarks) ) landmarks = ([ ]);
   m_delete( landmarks, name );
}