]> jfr.im git - irc/quakenet/newserv.git/blobdiff - nterface/nterfacer.c
Sigh
[irc/quakenet/newserv.git] / nterface / nterfacer.c
index 491b8c74d68c79f1ab3eef318f640b646fc37e38..6af51996a6dd9efd684d9a5e8a870b932c16a6f4 100644 (file)
 #include "../lib/irc_string.h"
 #include "../core/config.h"
 #include "../core/events.h"
+#include "../lib/version.h"
 
 #include "nterfacer.h"
 #include "logging.h"
 
+MODULE_VERSION("$Id: nterfacer.c 663 2006-05-16 17:27:36Z newserv $")
+
 struct service_node *tree = NULL;
 struct esocket_events nterfacer_events;
 struct esocket *nterfacer_sock;
@@ -498,7 +501,7 @@ int nterfacer_line_event(struct esocket *sock, char *newline) {
 }
 
 int nterfacer_new_rline(char *line, struct esocket *socket, int *number) {
-  char *sp, *p, *parsebuf, *pp, commandbuf[MAX_BUFSIZE], *args[MAX_ARGS], *newp;
+  char *sp, *p, *parsebuf = NULL, *pp, commandbuf[MAX_BUFSIZE], *args[MAX_ARGS], *newp;
   int argcount;
   struct service_node *service;
   struct rline *prequest;
@@ -598,7 +601,7 @@ int nterfacer_new_rline(char *line, struct esocket *socket, int *number) {
     *newp = '\0';
   }
   if(argcount < hl->args) {
-    if(argcount)
+    if(argcount && parsebuf)
       free(parsebuf);
     return RE_WRONG_ARG_COUNT;
   }
@@ -606,7 +609,7 @@ int nterfacer_new_rline(char *line, struct esocket *socket, int *number) {
   prequest = (struct rline *)malloc(sizeof(struct rline));
   if(!prequest) {
     MemError();
-    if(argcount)
+    if(argcount && parsebuf)
       free(parsebuf);
     return RE_MEM_ERROR;
   }
@@ -623,7 +626,7 @@ int nterfacer_new_rline(char *line, struct esocket *socket, int *number) {
   rlines = prequest;
   re = (hl->function)(prequest, argcount, args);
   
-  if(argcount)
+  if(argcount && parsebuf)
     free(parsebuf);
 
   return re;