summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/userprog/process.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/userprog/process.c b/src/userprog/process.c
index 2b50edd..21ba48d 100644
--- a/src/userprog/process.c
+++ b/src/userprog/process.c
@@ -307,7 +307,7 @@ load (const char *file_name, void (**eip) (void), void **esp)
unsigned argc = 0;
/* Tokenize passed command in-place. */
- // esp_c still points to first character of passed command
+ // esp_cmd still points to first character of passed command
char *token, *save_ptr;
for (token = strtok_r (esp_cmd, " ", &save_ptr); token != NULL;
token = strtok_r (NULL, " ", &save_ptr))
@@ -317,15 +317,15 @@ load (const char *file_name, void (**eip) (void), void **esp)
file_name = esp_cmd;
- /* Alignment for entries of argv. */
+ /* argv entries are pointers so they need to be aligned to the pointer size. */
size_t psize = sizeof (char *);
- size_t word_alignment = (cmd_len + psize) / psize; // next address to place pointer
+ size_t word_alignment = (cmd_len + psize) / psize;
/* Write argv entries. */
char **esp_argv_entry = *esp;
esp_argv_entry -= word_alignment + argc + 1; // +1 makes room for argv[argc] = NULL
- char **esp_argv_first = esp_argv_entry;
+ char **esp_argv_first = esp_argv_entry; // save for later
// esp_cmd points to first entry so write directly
*esp_argv_entry = esp_cmd;
@@ -334,11 +334,11 @@ load (const char *file_name, void (**eip) (void), void **esp)
for (unsigned i = 0; i < argc - 1; i++) {
// find next \0 in cmd
while (*(++esp_cmd) != '\0') {}
- *esp_argv_entry = esp_cmd + 1;
+ *esp_argv_entry = esp_cmd + 1; // point to next character
esp_argv_entry++;
}
- char *** esp_argv = esp_argv_first;
+ char ***esp_argv = esp_argv_first;
esp_argv--;
*esp_argv = esp_argv_first;