diff --git a/tests/regression/issue_504/SConscript b/tests/regression/issue_504/SConscript
new file mode 100644
index 0000000..c303171
--- /dev/null
+++ b/tests/regression/issue_504/SConscript
@@ -0,0 +1,12 @@
+# Regression test for #504:
+# Non empty submessage considered empty on FT_POINTER fields with address aligned on 0x100
+
+Import('env', 'malloc_env')
+
+env.NanopbProto(["test.proto"])
+test = malloc_env.Program(["test.c",
+                 "test.pb.c",
+                 "$COMMON/pb_encode.o",
+                 "$COMMON/pb_common.o"])
+
+env.RunTest(test)
diff --git a/tests/regression/issue_504/test.c b/tests/regression/issue_504/test.c
new file mode 100644
index 0000000..1ca86db
--- /dev/null
+++ b/tests/regression/issue_504/test.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <pb_encode.h>
+#include "test.pb.h"
+#include "unittests.h"
+
+const char STR[] = "test str";
+#define ALIGN 0x100
+
+int main(int argc, char **argv)
+{
+    int status = 0;
+    uint8_t buffer[512] = {0};
+    int i;
+    pb_ostream_t ostream;
+    MyMessage msg = MyMessage_init_zero;
+    char *pStr, *pStrAligned;
+    ostream = pb_ostream_from_buffer(buffer, sizeof(buffer));
+
+    /* copy STR to a malloced 0x100 aligned address */
+    pStr = malloc(sizeof(STR) + ALIGN);
+    pStrAligned = (char*)((uintptr_t)(pStr + ALIGN) & ~(ALIGN - 1));
+    memcpy(pStrAligned, STR, sizeof(STR));
+
+    msg.submessage.somestring = pStrAligned;
+    printf("%p: '%s'\n", msg.submessage.somestring, msg.submessage.somestring);
+
+    if (!pb_encode(&ostream, MyMessage_fields, &msg)) {
+        fprintf(stderr, "Encode failed: %s\n", PB_GET_ERROR(&ostream));
+        return 1;
+    }
+
+    free(pStr);
+    msg.submessage.somestring = NULL;
+
+    printf("response payload (%d):", (int)ostream.bytes_written);
+    for (i = 0; i < ostream.bytes_written; i++) {
+        printf("%02X", buffer[i]);
+    }
+    printf("\n");
+
+    TEST(ostream.bytes_written != 0);
+
+    return status;
+}
+
diff --git a/tests/regression/issue_504/test.proto b/tests/regression/issue_504/test.proto
new file mode 100644
index 0000000..bdafd3c
--- /dev/null
+++ b/tests/regression/issue_504/test.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+import "nanopb.proto";
+
+message MyMessage
+{
+    SubMessage submessage = 1 [(nanopb).proto3_singular_msgs = true];
+}
+
+message SubMessage
+{
+    string somestring = 1 [(nanopb).type = FT_POINTER];
+}
