Hi,

Here is a reduced testcase based on libssh2. I get the ICE with gcc-4.3 -O2
only.


typedef long unsigned int size_t;
typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
typedef struct _LIBSSH2_CHANNEL LIBSSH2_CHANNEL;
typedef struct _LIBSSH2_SFTP LIBSSH2_SFTP;
typedef struct _LIBSSH2_SFTP_ATTRIBUTES LIBSSH2_SFTP_ATTRIBUTES;
struct _LIBSSH2_SFTP_ATTRIBUTES { unsigned long flags; };
struct _LIBSSH2_CHANNEL { LIBSSH2_SESSION *session; };
struct _LIBSSH2_SFTP { LIBSSH2_CHANNEL *channel; unsigned char *stat_packet; };
struct _LIBSSH2_SESSION { void *abstract; void *(*alloc)(size_t count, void 
**abstract); };
static int sftp_attrsize(const LIBSSH2_SFTP_ATTRIBUTES * attrs) { int attrsize 
= 4; if (!attrs) { return attrsize; } if (attrs->flags & 0x00000001) if 
(attrs->flags & 0x00000002) attrsize += 8; if (attrs->flags & 0x00000004) 
attrsize += 4; if (attrs->flags & 0x00000008) attrsize += 8; return attrsize; }
static int sftp_stat(LIBSSH2_SFTP *sftp, const char *path, unsigned int 
path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES * attrs) { LIBSSH2_CHANNEL 
*channel = sftp->channel; LIBSSH2_SESSION *session = channel->session; 
sftp->stat_packet = session->alloc((sftp_attrsize(attrs)), 
&(session)->abstract); }
libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp, const char *path, unsigned int 
path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES *attrs) { int rc; 
BLOCK_ADJUST(rc, sftp->channel->session, sftp_stat(sftp, path, path_len, 
stat_type, attrs)); }




-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to