davidg          Sat Feb 24 05:39:30 2001 EDT

  Modified files:              
    /php4/ext/midgard   article.c calendar.c event.c person.c topic.c 
  Log:
  fixed some possible memory leaks.
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.7 php4/ext/midgard/article.c:1.8
--- php4/ext/midgard/article.c:1.7      Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/article.c  Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.7 2001/02/22 17:39:37 davidg Exp $
+/* $Id: article.c,v 1.8 2001/02/24 13:39:30 davidg Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -59,12 +59,14 @@
 
        ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
        if (ids) {
-               id =
-                  mgd_idfield(mgd_handle(), "topic", "article",
+               id = mgd_idfield(mgd_handle(), "topic", "article",
                               (*article)->value.lval);
                for (i = 0; ids[i]; i++)
-                       if (ids[i] == id)
+                       if (ids[i] == id) {
+                               free(ids);
                                RETURN_TRUE;
+                       }
+               free(ids);
        }
 }
 
@@ -254,21 +256,24 @@
 
        topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
-       if (typev == -1)
-               php_midgard_select(&MidgardArticle, return_value,
-               ARTICLE_SELECT,
-                                  ARTICLE_FROM,
-                                  "article.topic IN $D AND author=person.id"
-                                  " AND (article.up=$d OR 1=$d)",
-                                  sortv, topics, up, up_wild);
-       else
-               php_midgard_select(&MidgardArticle, return_value,
-               ARTICLE_SELECT,
-                                  ARTICLE_FROM,
-                                  "article.type=$d AND article.topic IN $D"
-                                  " AND (article.up=$d OR 1=$d)"
-                                  " AND author=person.id",
-                                  sortv, typev, topics, up, up_wild);
+       if(topics) {
+               if (typev == -1)
+                       php_midgard_select(&MidgardArticle, return_value,
+                      ARTICLE_SELECT,
+                                          ARTICLE_FROM,
+                                          "article.topic IN $D AND author=person.id"
+                                          " AND (article.up=$d OR 1=$d)",
+                                          sortv, topics, up, up_wild);
+               else
+                       php_midgard_select(&MidgardArticle, return_value,
+                      ARTICLE_SELECT,
+                                          ARTICLE_FROM,
+                                          "article.type=$d AND article.topic IN $D"
+                                          " AND (article.up=$d OR 1=$d)"
+                                          " AND author=person.id",
+                                          sortv, typev, topics, up, up_wild);
+               free(topics);
+       }
 }
 
 MGD_FUNCTION(list_topic_articles_all_fast)
@@ -331,20 +336,23 @@
 
        topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
-       if (typev == -1)
-               php_midgard_select(&MidgardArticle, return_value,
-                                  ARTICLE_SELECT_FAST,
-                                  ARTICLE_FROM_FAST,
-                                  "article.topic IN $D"
-                                  " AND (article.up=$d OR 1=$d)",
-                                  sortv, topics, up, up_wild);
-       else
-               php_midgard_select(&MidgardArticle, return_value,
-                                  ARTICLE_SELECT_FAST,
-                                  ARTICLE_FROM_FAST,
-                                  "article.type=$d AND article.topic IN $D"
-                                  " AND (article.up=$d OR 1=$d)",
-                                  sortv, typev, topics, up, up_wild);
+       if(topics) {
+               if (typev == -1)
+                       php_midgard_select(&MidgardArticle, return_value,
+                                          ARTICLE_SELECT_FAST,
+                                          ARTICLE_FROM_FAST,
+                                          "article.topic IN $D"
+                                          " AND (article.up=$d OR 1=$d)",
+                                          sortv, topics, up, up_wild);
+               else
+                       php_midgard_select(&MidgardArticle, return_value,
+                                          ARTICLE_SELECT_FAST,
+                                          ARTICLE_FROM_FAST,
+                                          "article.type=$d AND article.topic IN $D"
+                                          " AND (article.up=$d OR 1=$d)",
+                                          sortv, typev, topics, up, up_wild);
+               free(topics);
+       }
 }
 
 MGD_FUNCTION(list_topic_articles_all_of_person)
@@ -362,11 +370,15 @@
        topics =
           mgd_tree(mgd_handle(), "topic", "up", (*topic)->value.lval, 0, NULL);
 
-       php_midgard_select(&MidgardArticle, return_value,
-            ARTICLE_SELECT, ARTICLE_FROM,
-                          "article.topic IN $D AND author=person.id AND author=$d AND 
article.up=0",
-                          "article.created DESC", topics,
-                          (*person)->value.lval);
+       if(topics) {
+               php_midgard_select(&MidgardArticle, return_value,
+               ARTICLE_SELECT, ARTICLE_FROM,
+                                  "article.topic IN $D AND author=person.id"
+                                  " AND author=$d AND article.up=0",
+                                  "article.created DESC", topics,
+                                  (*person)->value.lval);
+               free(topics);
+       }
 }
 
 MGD_FUNCTION(get_article)
Index: php4/ext/midgard/calendar.c
diff -u php4/ext/midgard/calendar.c:1.4 php4/ext/midgard/calendar.c:1.5
--- php4/ext/midgard/calendar.c:1.4     Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/calendar.c Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: calendar.c,v 1.4 2001/02/22 17:39:37 davidg Exp $
+/* $Id: calendar.c,v 1.5 2001/02/24 13:39:30 davidg Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -95,23 +95,26 @@
        
     topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
        
-    if (typev == -1)
-           php_midgard_select(&MidgardArticle, return_value,
-                                          ARTICLE_SELECT "," ARTICLE_CALENDAR, 
ARTICLE_FROM,
-                                          "article.topic IN $D AND author=person.id"
-                                          " AND article.up=0 AND 
Unix_Timestamp(calstart)<$d"
-                                          " AND 24*60*60-1+Unix_timestamp("
-                                          "       Date_Add(calstart, INTERVAL caldays 
DAY))>$d",
-                                          sortv, topics, stopv, startv);
-    else
-           php_midgard_select(&MidgardArticle, return_value,
-                                          ARTICLE_SELECT "," ARTICLE_CALENDAR, 
ARTICLE_FROM,
-                                          "article.type=$d AND article.topic IN $D"
-                                          " AND author=person.id"
-                                          " AND article.up=0 AND 
Unix_Timestamp(calstart)<$d"
-                                          " AND 24*60*60-1+Unix_timestamp("
-                                          "       Date_Add(calstart, INTERVAL caldays 
DAY))>$d",
-                                          sortv, typev, topics, stopv, startv);
+       if(topics) {
+           if (typev == -1)
+                   php_midgard_select(&MidgardArticle, return_value,
+                                                  ARTICLE_SELECT "," 
+ARTICLE_CALENDAR, ARTICLE_FROM,
+                                                  "article.topic IN $D AND 
+author=person.id"
+                                                  " AND article.up=0 AND 
+Unix_Timestamp(calstart)<$d"
+                                                  " AND 24*60*60-1+Unix_timestamp("
+                                                  "     Date_Add(calstart, INTERVAL 
+caldays DAY))>$d",
+                                                  sortv, topics, stopv, startv);
+           else
+                   php_midgard_select(&MidgardArticle, return_value,
+                                                  ARTICLE_SELECT "," 
+ARTICLE_CALENDAR, ARTICLE_FROM,
+                                                  "article.type=$d AND article.topic 
+IN $D"
+                                                  " AND author=person.id"
+                                                  " AND article.up=0 AND 
+Unix_Timestamp(calstart)<$d"
+                                                  " AND 24*60*60-1+Unix_timestamp("
+                                                  "     Date_Add(calstart, INTERVAL 
+caldays DAY))>$d",
+                                                  sortv, typev, topics, stopv, 
+startv);
+               free(topics);
+       }
 }
 
 MGD_FUNCTION(list_topic_calendar_all_fast)
@@ -186,20 +189,25 @@
        
     topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
        
-    if (typev == -1)
-           php_midgard_select(&MidgardArticle, return_value, ARTICLE_SELECT_FAST "," 
ARTICLE_CALENDAR,
-                                          ARTICLE_FROM_FAST,
-                                          "article.topic IN $D"
-                                          " AND article.up=0 AND 
Unix_Timestamp(calstart)<$d"
-                                          " AND 24*60*60-1+Unix_timestamp("
-                                          "       Date_Add(calstart, INTERVAL caldays 
DAY))>$d",
-                                          sortv, topics, stopv, startv);
-    else
-           php_midgard_select(&MidgardArticle, return_value, ARTICLE_SELECT_FAST "," 
ARTICLE_CALENDAR,
-                                          ARTICLE_FROM_FAST,
-                                          "article.type=$d AND article.topic IN $D"
-                                          " AND article.up=0 AND 
Unix_Timestamp(calstart)<$d"
-                                          " AND 24*60*60-1+Unix_timestamp("
-                                          "       Date_Add(calstart, INTERVAL caldays 
DAY))>$d",
-                                          sortv, typev, topics, stopv, startv);
+       if(topics) {
+           if (typev == -1)
+                   php_midgard_select(&MidgardArticle, return_value,
+                                                  ARTICLE_SELECT_FAST "," 
+ARTICLE_CALENDAR,
+                                                  ARTICLE_FROM_FAST,
+                                                  "article.topic IN $D"
+                                                  " AND article.up=0 AND 
+Unix_Timestamp(calstart)<$d"
+                                                  " AND 24*60*60-1+Unix_timestamp("
+                                                  "     Date_Add(calstart, INTERVAL 
+caldays DAY))>$d",
+                                                  sortv, topics, stopv, startv);
+               else
+                           php_midgard_select(&MidgardArticle, return_value,
+                                                  ARTICLE_SELECT_FAST "," 
+ARTICLE_CALENDAR,
+                                                  ARTICLE_FROM_FAST,
+                                                  "article.type=$d AND article.topic 
+IN $D"
+                                                  " AND article.up=0 AND 
+Unix_Timestamp(calstart)<$d"
+                                                  " AND 24*60*60-1+Unix_timestamp("
+                                                  "     Date_Add(calstart, INTERVAL 
+caldays DAY))>$d",
+                                                  sortv, typev, topics, stopv, 
+startv);
+               free(topics);
+       }
 }
Index: php4/ext/midgard/event.c
diff -u php4/ext/midgard/event.c:1.6 php4/ext/midgard/event.c:1.7
--- php4/ext/midgard/event.c:1.6        Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/event.c    Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: event.c,v 1.6 2001/02/22 17:39:37 davidg Exp $
+/* $Id: event.c,v 1.7 2001/02/24 13:39:30 davidg Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -520,6 +520,7 @@
                                                           
(*start)->value.lval,(*end)->value.lval,
                                                           
(*start)->value.lval,(*end)->value.lval,
                                                           
(*start)->value.lval,(*end)->value.lval);
+               free(events);
        } else {
            if (typev == -1)
                    php_midgard_select(&MidgardEvent, return_value, 
"id,up,start,end,title,"
Index: php4/ext/midgard/person.c
diff -u php4/ext/midgard/person.c:1.5 php4/ext/midgard/person.c:1.6
--- php4/ext/midgard/person.c:1.5       Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/person.c   Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: person.c,v 1.5 2001/02/22 17:39:37 davidg Exp $
+/* $Id: person.c,v 1.6 2001/02/24 13:39:30 davidg Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -148,8 +148,11 @@
 
     deps = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
-    php_midgard_select(&MidgardPerson, return_value, PERSON_SELECT,
-                  "person", "department IN $D", sortv, deps);
+       if(deps) {
+           php_midgard_select(&MidgardPerson, return_value, PERSON_SELECT,
+                          "person", "department IN $D", sortv, deps);
+               free(deps);
+       }
 }
 
 MGD_FUNCTION(list_topic_persons_all)
Index: php4/ext/midgard/topic.c
diff -u php4/ext/midgard/topic.c:1.7 php4/ext/midgard/topic.c:1.8
--- php4/ext/midgard/topic.c:1.7        Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/topic.c    Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: topic.c,v 1.7 2001/02/22 17:39:37 davidg Exp $
+/* $Id: topic.c,v 1.8 2001/02/24 13:39:30 davidg Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -128,10 +128,14 @@
 #endif
 
        ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
-       if (ids)
+       if (ids) {
                for (i = 0; ids[i]; i++)
-                       if (ids[i] == (*topic)->value.lval)
+                       if (ids[i] == (*topic)->value.lval) {
+                               free(ids);
                                RETURN_TRUE;
+                       }
+               free(ids);
+       }
 }
 
 MGD_FUNCTION(get_topic)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to