A declaration of the form
void op ([in, out] long s, [in, out, size_is(s)] long **myarray);
raises a possible ambiguity about the type of myarray. IDL defines myarray in this case to be an array of pointers to longs, not a pointer to an array of longs. The max_is and size_is attributes always apply to the top-level, or rightmost, * (asterisk) in the IDL signature of a parameter.