+ if (wav->f) {
+ le_store (rlen, rifflen, 4);
+ le_store (dlen, datalen, 4);
+
+ if (fseek (wav->f, 4, SEEK_SET)) {
+ error_report("wav_destroy: rlen fseek failed: %s",
+ strerror(errno));
+ goto doclose;
+ }
+ if (fwrite (rlen, 4, 1, wav->f) != 1) {
+ error_report("wav_destroy: rlen fwrite failed: %s",
+ strerror(errno));
+ goto doclose;
+ }
+ if (fseek (wav->f, 32, SEEK_CUR)) {
+ error_report("wav_destroy: dlen fseek failed: %s",
+ strerror(errno));
+ goto doclose;
+ }
+ if (fwrite (dlen, 1, 4, wav->f) != 4) {
+ error_report("wav_destroy: dlen fwrite failed: %s",
+ strerror(errno));
+ goto doclose;
+ }
+ doclose:
+ if (fclose (wav->f)) {
+ error_report("wav_destroy: fclose failed: %s", strerror(errno));
+ }