On Mon, 18 Feb 2002, Dan Sugalski wrote:

>
> I think I'd rather we did have the cast in there. If nothing else,
> it'll help us note where we've cast incorrectly and, while that might
> just be an error in the casting, it might also indicate an error in
> the logic.
>

OK, this is a roundup of that lot :

Index: embed.c
===================================================================
RCS file: /home/perlcvs/parrot/embed.c,v
retrieving revision 1.10
diff -u -r1.10 embed.c
--- embed.c     15 Feb 2002 02:30:02 -0000      1.10
+++ embed.c     18 Feb 2002 20:57:51 -0000
@@ -129,7 +129,7 @@

     pf = PackFile_new();

-    if(!PackFile_unpack(interpreter, pf, program_code, (unsigned)program_size) ) {
+    if(!PackFile_unpack(interpreter, pf, (opcode_t *)program_code, 
+(size_t)program_size) ) {
         fprintf(stderr, "Parrot VM: Can't unpack packfile %s.\n", filename);
         return NULL;
     }
Index: jit.c
===================================================================
RCS file: /home/perlcvs/parrot/jit.c,v
retrieving revision 1.12
diff -u -r1.12 jit.c
--- jit.c       29 Jan 2002 14:05:31 -0000      1.12
+++ jit.c       18 Feb 2002 20:57:53 -0000
@@ -214,7 +214,7 @@
                         address = (INTVAL *)&s->strlen;
                         break;
                 case 6:
-                        address = (INTVAL *)s->encoding;
+                        address = (INTVAL *)&s->encoding;
                         break;
                 case 7:
                         address = (INTVAL *)&s->type;
Index: key.c
===================================================================
RCS file: /home/perlcvs/parrot/key.c,v
retrieving revision 1.19
diff -u -r1.19 key.c
--- key.c       11 Feb 2002 17:59:11 -0000      1.19
+++ key.c       18 Feb 2002 20:57:54 -0000
@@ -180,10 +180,10 @@
       return;
     }
     if(size > key->size) {
-      KEY_PAIR* pair = (KEY_PAIR*)realloc(key->keys,sizeof(KEY_PAIR)*size);
+      KEY_PAIR* pair = (KEY_PAIR*)realloc(key->keys,sizeof(KEY_PAIR *)*size);
       if(pair != NULL) {
        INTVAL i;
-        key->keys = pair;
+        key->keys = (KEY_PAIR **)pair;
        for(i=key->size;i<size;i++) {
          key->keys[i]->type = enum_key_undef;
        }
@@ -197,7 +197,7 @@
       for(i=size;i<key->size;i++) {
         /* Memory leak in the making */
       }
-      key->keys = (KEY_PAIR*)realloc(key->keys,sizeof(KEY_PAIR)*size);
+      key->keys = (KEY_PAIR**)realloc(key->keys,sizeof(KEY_PAIR *)*size);
     }
     key->size = size;
   }
@@ -241,7 +241,7 @@

   if(key != NULL) {
     if((idx >= 0) && (idx < key->size)) {
-      KEY_PAIR* pair = &key->keys[idx];
+      KEY_PAIR* pair = (KEY_PAIR *)&key->keys[idx];
       return pair->type;
     }
     else {
@@ -266,7 +266,7 @@

   if(key != NULL) {
     if((idx >= 0) && (idx < key->size)) {
-      KEY_PAIR* pair = &key->keys[idx];
+      KEY_PAIR* pair = (KEY_PAIR *)&key->keys[idx];
       if(pair != NULL) {
         return pair;
       }
@@ -388,7 +388,7 @@
     if(key->size > 0) {
       /* Memory leak in the making */
       key->size--;
-      key->keys = (KEY_PAIR*)realloc(key->keys,sizeof(KEY_PAIR)*key->size);
+      key->keys = (KEY_PAIR**)realloc(key->keys,sizeof(KEY_PAIR *)*key->size);
     }
     else if(key->size == 0) {
       fprintf(stderr,
@@ -416,7 +416,7 @@

   if(key != NULL) {
     if((idx >= 0) && (idx < key->size)) {
-      KEY_PAIR* pair = &key->keys[idx];
+      KEY_PAIR* pair = (KEY_PAIR *)&key->keys[idx];
       pair->type++;
     }
     else {
Index: misc.c
===================================================================
RCS file: /home/perlcvs/parrot/misc.c,v
retrieving revision 1.11
diff -u -r1.11 misc.c
--- misc.c      15 Feb 2002 02:30:02 -0000      1.11
+++ misc.c      18 Feb 2002 20:57:58 -0000
@@ -496,7 +496,7 @@
 }


-STRING *Parrot_vsprintf_c(struct Parrot_Interp * interpreter, char *pat,
+STRING *Parrot_vsprintf_c(struct Parrot_Interp * interpreter, const char *pat,
                          va_list * args)
 {
     STRING *realpat =
@@ -545,7 +545,7 @@
     return ret;
 }

-STRING *Parrot_sprintf_c(struct Parrot_Interp * interpreter, char *pat,
+STRING *Parrot_sprintf_c(struct Parrot_Interp * interpreter, const char *pat,
                         ...)
 {
     STRING *ret;
Index: string.c
===================================================================
RCS file: /home/perlcvs/parrot/string.c,v
retrieving revision 1.46
diff -u -r1.46 string.c
--- string.c    5 Feb 2002 11:41:27 -0000       1.46
+++ string.c    18 Feb 2002 20:58:02 -0000
@@ -153,8 +153,8 @@
     STRING *dest;
     CHARTYPE_TRANSCODER transcoder1 = NULL;
     CHARTYPE_TRANSCODER transcoder2 = NULL;
-    char *srcstart;
-    char *srcend;
+    const char *srcstart;
+    const char *srcend;
     char *deststart;
     char *destend;

@@ -298,8 +298,8 @@
 STRING*
 string_substr(struct Parrot_Interp *interpreter, const STRING* src, INTVAL offset, 
INTVAL length, STRING** d) {
     STRING *dest;
-    char *substart;
-    char *subend;
+    const char *substart;
+    const char *subend;
     UINTVAL true_offset;
     UINTVAL true_length;

@@ -350,8 +350,8 @@
  */
 STRING*
 string_chopn(STRING* s, INTVAL n) {
-    char *bufstart = s->bufstart;
-    char *bufend = bufstart + s->bufused;
+    const char *bufstart = s->bufstart;
+    const char *bufend = bufstart + s->bufused;
     UINTVAL true_n;

     true_n = (UINTVAL) n;
@@ -376,10 +376,10 @@
 INTVAL
 string_compare(struct Parrot_Interp *interpreter, const STRING* s1,
                const STRING* s2) {
-    char *s1start;
-    char *s1end;
-    char *s2start;
-    char *s2end;
+    const char *s1start;
+    const char *s1end;
+    const char *s2start;
+    const char *s2end;
     INTVAL cmp = 0;

     if (s1 && !s2) {
@@ -459,8 +459,8 @@
     INTVAL i = 0;

     if (s) {
-        char *start = s->bufstart;
-        char *end = start + s->bufused;
+        const char *start = s->bufstart;
+        const char *end = start + s->bufused;
         int sign = 1;
         BOOLVAL in_number = 0;

@@ -497,8 +497,8 @@
     FLOATVAL f = 0.0;

     if (s) {
-        char *start = s->bufstart;
-        char *end = start + s->bufused;
+        const char *start = s->bufstart;
+        const char *end = start + s->bufused;
         int sign = 1;
         BOOLVAL seen_dot = 0;
         BOOLVAL seen_e = 0;
Index: test_main.c
===================================================================
RCS file: /home/perlcvs/parrot/test_main.c,v
retrieving revision 1.44
diff -u -r1.44 test_main.c
--- test_main.c 16 Feb 2002 09:20:43 -0000      1.44
+++ test_main.c 18 Feb 2002 20:58:03 -0000
@@ -14,6 +14,8 @@

 #define setopt(flag) Parrot_setflag(interpreter, flag, (*argv)[0]+2);

+extern void exit(int);
+
 char *
 parseflags(Parrot interpreter, int *argc, char **argv[]);

Index: include/parrot/misc.h
===================================================================
RCS file: /home/perlcvs/parrot/include/parrot/misc.h,v
retrieving revision 1.2
diff -u -r1.2 misc.h
--- include/parrot/misc.h       5 Feb 2002 10:04:10 -0000       1.2
+++ include/parrot/misc.h       18 Feb 2002 20:58:04 -0000
@@ -6,7 +6,7 @@

 STRING* Parrot_vsprintf_s(struct Parrot_Interp *, STRING* pat, va_list *);

-STRING* Parrot_vsprintf_c(struct Parrot_Interp *, char * pat, va_list *);
+STRING* Parrot_vsprintf_c(struct Parrot_Interp *, const char * pat, va_list *);

 void Parrot_vsprintf(struct Parrot_Interp *, char *targ, char *pat, va_list *);

@@ -14,7 +14,7 @@

 STRING* Parrot_sprintf_s(struct Parrot_Interp *, STRING* pat, ...);

-STRING* Parrot_sprintf_c(struct Parrot_Interp *, char * pat, ...);
+STRING* Parrot_sprintf_c(struct Parrot_Interp *, const char * pat, ...);

 void Parrot_sprintf(struct Parrot_Interp *, char *targ, char *pat, ...);



Everything still appears to be working and no obvious leaks ....

/J\
-- 
Jonathan Stowe                      |
<http://www.gellyfish.com>          |      This space for rent
                                    |

Reply via email to