On Wed, 11 Jan 2012, Robert Gomulka wrote:

The code:
struct tmp_device {
   char** descr;
   int descr_len;
};

typedef struct tmp_device tmp_device_t;

static void release_device(tmp_device_t* d) {
   if (d != NULL) {
       if (d->descr != NULL) {
           int i = 0;
           for (; i < d->descr_len; i++) {
               if (d->descr[i] != NULL) {
                   free(d->descr[i]);
               }
           }
           free(d->descr);
       }
       free(d);
   }
}

The checker:
@@
expression E;
identifier func !~ "dbg";
@@

free(E)

...

(
- func(E)
+ BUG(E)
)

The result:
EXN:Invalid_argument("equal: abstract value")

OK, thanks. The problem is as I mentioned in the previous message, with the PCRE regular expressions. Hopefully, the next version will be ready soon.

julia
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to