// RUN: %clangxx_msan -O0 -g %s -o %t && %run %t
// RUN: %clangxx_msan -O0 -g -DPOSITIVE %s -o %t && not %run %t |& FileCheck %s

#include <assert.h>
#include <iconv.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

int main(void) {
  iconv_t cd = iconv_open("ASCII", "ASCII");
  assert(cd != (iconv_t)-1);

  char inbuf_[100];
  strcpy(inbuf_, "sample text");
  char outbuf_[100];
#if defined(__FreeBSD__)
  // FreeBSD's iconv() expects the 2nd argument be of type 'const char**'.
  const char *inbuf = inbuf_;
#else
  char *inbuf = inbuf_;
#endif
  char *outbuf = outbuf_;
  size_t inbytesleft = strlen(inbuf_);
  size_t outbytesleft = sizeof(outbuf_);

#ifdef POSITIVE
  {
    char u;
    char *volatile p = &u;
    inbuf_[5] = *p;
  }
#endif

  size_t res;
  res = iconv(cd, 0, 0, 0, 0);
  assert(res != (size_t)-1);

  res = iconv(cd, 0, 0, &outbuf, &outbytesleft);
  assert(res != (size_t)-1);

  res = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
  // CHECK: MemorySanitizer: use-of-uninitialized-value
  // CHECK: #0 {{.*}} in main {{.*}}iconv.cc:[[@LINE-2]]
  assert(res != (size_t)-1);
  assert(inbytesleft == 0);

  assert(memcmp(inbuf_, outbuf_, strlen(inbuf_)) == 0);

  iconv_close(cd);
  return 0;
}
