]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
remove unused PRVM_SetQCString function
[xonotic/darkplaces.git] / prvm_edict.c
index ea7c7f3991dc442386a0c72d02d52e4d02cb55e3..11c9dd19ff300e06b662a1de570eb693b9e52e51 100644 (file)
@@ -187,7 +187,6 @@ Sets everything to NULL
 */
 void PRVM_ED_ClearEdict (prvm_edict_t *e)
 {
-       int num;
        memset (e->fields.vp, 0, prog->progs->entityfields * 4);
        e->priv.required->free = false;
 
@@ -885,8 +884,7 @@ qboolean PRVM_ED_ParseEpair(prvm_edict_t *ent, ddef_t *key, const char *s)
        {
        case ev_string:
                l = strlen(s) + 1;
-               new_p = PRVM_AllocString(l);
-               val->string = PRVM_SetQCString(new_p);
+               val->string = PRVM_AllocString(l, &new_p);
                for (i = 0;i < l;i++)
                {
                        if (s[i] == '\\' && i < l-1)
@@ -1235,6 +1233,10 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
        ddef_t *infielddefs;
        dfunction_t *dfunctions;
 
+       if( prog->loaded ) {
+               PRVM_ERROR ("PRVM_LoadProgs: there is already a %s program loaded!\n", PRVM_NAME );
+       }
+
        prog->progs = (dprograms_t *)FS_LoadFile (filename, prog->progs_mempool, false);
        if (prog->progs == NULL)
                PRVM_ERROR ("PRVM_LoadProgs: couldn't load %s for %s", filename, PRVM_NAME);
@@ -1717,6 +1719,7 @@ void PRVM_InitProg(int prognr)
        memset(prog, 0, sizeof(prvm_prog_t));
 
        prog->time = &prog->_time;
+       prog->error_cmd = Host_Error;
 }
 
 int PRVM_GetProgNr()
@@ -1749,12 +1752,6 @@ prvm_edict_t *PRVM_EDICT_NUM_ERROR(int n, char *filename, int fileline)
        return NULL;
 }
 
-void PRVM_ProcessError(void)
-{
-       if(prog)
-               PRVM_GCALL(error_cmd)();
-}
-
 /*
 int NUM_FOR_EDICT_ERROR(prvm_edict_t *e)
 {
@@ -1815,20 +1812,6 @@ const char *PRVM_GetString(int num)
        }
 }
 
-int PRVM_SetQCString(const char *s)
-{
-       int i;
-       if (!s)
-               return 0;
-       if (s >= prog->strings && s <= prog->strings + prog->stringssize)
-               return s - prog->strings;
-       for (i = 0;i < prog->numknownstrings;i++)
-               if (prog->knownstrings[i] == s)
-                       return -1 - i;
-       Host_Error("PRVM_SetQCString: unknown string\n");
-       return -1 - i;
-}
-
 int PRVM_SetEngineString(const char *s)
 {
        int i;
@@ -1861,7 +1844,7 @@ int PRVM_SetEngineString(const char *s)
        return -1 - i;
 }
 
-char *PRVM_AllocString(int bufferlength)
+int PRVM_AllocString(int bufferlength, char **pointer)
 {
        int i;
        if (!bufferlength)
@@ -1881,22 +1864,27 @@ char *PRVM_AllocString(int bufferlength)
                }
                prog->numknownstrings++;
        }
-       return (char *)(prog->knownstrings[i] = PRVM_Alloc(bufferlength));
+       (char *)(prog->knownstrings[i]) = PRVM_Alloc(bufferlength);
+       if (pointer)
+               *pointer = (char *)(prog->knownstrings[i]);
+       return -1 - i;
 }
 
-void PRVM_FreeString(char *s)
+void PRVM_FreeString(int num)
 {
-       int i;
-       if (!s)
+       if (num == 0)
                Host_Error("PRVM_FreeString: attempt to free a NULL string\n");
-       if (s >= prog->strings && s <= prog->strings + prog->stringssize)
+       else if (num >= 0 && num < prog->stringssize)
                Host_Error("PRVM_FreeString: attempt to free a constant string\n");
-       for (i = 0;i < prog->numknownstrings;i++)
-               if (prog->knownstrings[i] == s)
-                       break;
-       if (i == prog->numknownstrings)
-               Host_Error("PRVM_FreeString: attempt to free a non-existent or already freed string\n");
-       PRVM_Free((char *)prog->knownstrings[i]);
-       prog->knownstrings[i] = NULL;
+       else if (num < 0 && num >= -prog->numknownstrings)
+       {
+               num = -1 - num;
+               if (!prog->knownstrings[num])
+                       Host_Error("PRVM_FreeString: attempt to free a non-existent or already freed string\n");
+               PRVM_Free((char *)prog->knownstrings[num]);
+               prog->knownstrings[num] = NULL;
+       }
+       else
+               Host_Error("PRVM_FreeString: invalid string offset %i\n", num);
 }